# Parallelizing if loops

**URL:** https://discourse.julialang.org/t/parallelizing-if-loops/90095
**Category:** New to Julia
**Tags:** question
**Created:** [November 11, 2022, 5:14am UTC](https://discourse.julialang.org/t/parallelizing-if-loops/90095 "2022-11-11T05:14:34Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![iangilan](https://avatars.discourse-cdn.com/v4/letter/i/b38774/32.png) [@iangilan](https://discourse.julialang.org/u/iangilan)
#### Post date: [November 11, 2022, 5:14am UTC](https://discourse.julialang.org/t/parallelizing-if-loops/90095/1 "2022-11-11T05:14:34Z")

</div>

How could I parallelize the following for loop including if condition?  
I’d like to use a different thread for each A,B,C and D.

```julia
for i=1:N
    if x[i]>0 && y[i]>0
        do A
    elseif x[i]>0 && y[i]<0
        do B
    elseif x[i]<0 && y[i]>0
        do C
    else
        do D
    end
end

```

---

<div class="post-metadata">

### Author: ![Mason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mason/32/2423_2.png) [@Mason](https://discourse.julialang.org/u/Mason)
#### Post date: [November 11, 2022, 5:23am UTC](https://discourse.julialang.org/t/parallelizing-if-loops/90095/2 "2022-11-11T05:23:45Z")

</div>

> [@iangilan](#):
>
> I’d like to use a different thread for each A,B,C and D.

But only of them is going to run, so isn’t this always single threaded?

---

<div class="post-metadata">

### Author: ![iangilan](https://avatars.discourse-cdn.com/v4/letter/i/b38774/32.png) [@iangilan](https://discourse.julialang.org/u/iangilan)
#### Post date: [November 11, 2022, 5:25am UTC](https://discourse.julialang.org/t/parallelizing-if-loops/90095/3 "2022-11-11T05:25:25Z")

</div>

A, B, C and D are independent.

---

<div class="post-metadata">

### Author: ![iangilan](https://avatars.discourse-cdn.com/v4/letter/i/b38774/32.png) [@iangilan](https://discourse.julialang.org/u/iangilan)
#### Post date: [November 11, 2022, 5:28am UTC](https://discourse.julialang.org/t/parallelizing-if-loops/90095/4 "2022-11-11T05:28:17Z")

</div>

I mean I want to use 1 thread for each condition, so maybe for loop is not appropriate. If that’s the case, I am looking for an alternative way to solve this.

---

<div class="post-metadata">

### Author: ![Mason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mason/32/2423_2.png) [@Mason](https://discourse.julialang.org/u/Mason)
#### Post date: [November 11, 2022, 5:51am UTC](https://discourse.julialang.org/t/parallelizing-if-loops/90095/5 "2022-11-11T05:51:43Z")

</div>

Sure they can be independant, but if you write

```julia
if cond1
    A()
elseif cond2
    B()
else
    C()
end

```

only one of those blocks of code actually runs, determined by the condition.

```julia
julia> if true
           println("A")
       elseif true
           println("B")
       else
           println("C")
       end
A

julia> if false
           println("A")
       elseif true
           println("B")
       else
           println("C")
       end
B

julia> if false
           println("A")
       elseif false
           println("B")
       else
           println("C")
       end
C

```

There’s no notion of parallelizing an `if` statement, because multiple things aren’t being run

---

<div class="post-metadata">

### Author: ![goerch](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/goerch/32/29122_2.png) [@goerch](https://discourse.julialang.org/u/goerch)
#### Post date: [November 11, 2022, 6:07am UTC](https://discourse.julialang.org/t/parallelizing-if-loops/90095/6 "2022-11-11T06:07:18Z")

</div>

> [@iangilan](#):
>
> ```julia
> for i=1:N
> 
> ```

```julia
Threads.@threads for i=1:N

```

does the job for me.

---

<div class="post-metadata">

### Author: ![Mason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mason/32/2423_2.png) [@Mason](https://discourse.julialang.org/u/Mason)
#### Post date: [November 11, 2022, 6:49am UTC](https://discourse.julialang.org/t/parallelizing-if-loops/90095/7 "2022-11-11T06:49:31Z")

</div>

Ohh, if the OP is trying to multithread the loop, then yes you can do that. I think I just misunderstood what they were asking for originally, sorry for the noise @iangilan.
