src/Util.jl

changeset 10
e9edf00242a3
parent 9
59d94d475b5a
child 18
0253c5881812
equal deleted inserted replaced
9:59d94d475b5a 10:e9edf00242a3
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 #########################

mercurial