23 mean, |
23 mean, |
24 proj_norm₂₁ball!, |
24 proj_norm₂₁ball!, |
25 curry, |
25 curry, |
26 ⬿, |
26 ⬿, |
27 @threadsif, |
27 @threadsif, |
28 @background |
28 @background, |
|
29 @backgroundif |
29 |
30 |
30 |
31 |
31 ########## |
32 ########## |
32 # Threads |
33 # Threads |
33 ########## |
34 ########## |
34 |
35 |
35 macro threadsif(threads, loop) |
36 macro threadsif(threads, loop) |
36 return esc(:(if $threads |
37 return esc(:(if $threads |
37 Threads.@threads $loop |
38 Threads.@threads $loop |
38 else |
39 else |
39 $loop |
40 $loop |
40 end)) |
41 end)) |
41 end |
42 end |
42 |
43 |
43 macro background(bgtask, fgtask) |
44 macro background(bgtask, fgtask) |
44 return :(t = Threads.@spawn $(esc(bgtask)); |
45 return :(t = Threads.@spawn $(esc(bgtask)); |
45 $(esc(fgtask)); |
46 $(esc(fgtask)); |
46 wait(t)) |
47 wait(t)) |
|
48 end |
|
49 |
|
50 macro backgroundif(threads, bgtask, fgtask) |
|
51 return :(if $(esc(threads)) |
|
52 @background $(esc(bgtask)) $(esc(fgtask)) |
|
53 else |
|
54 $(esc(bgtask)) |
|
55 $(esc(fgtask)) |
|
56 end) |
47 end |
57 end |
48 |
58 |
49 ######################## |
59 ######################## |
50 # Functional programming |
60 # Functional programming |
51 ######################### |
61 ######################### |