環境
- Julia 1.2.0
Golang で Channel を使ってようやく Julia の Channel の動きを理解できた気がする。
capa = 10 c = Channel(capa) function f(c) for i in 1:10 put!(c, i) end end function g(c) for i in c sleep(0.5) println("From g: ", i) end println("Finish") end @async f(c) @async g(c) close(c)
for i in c sleep(0.5) println("From g: ", i) end
の部分は channel が close されるまでずっと回り続ける。
Julia には Go の WaitGroup のようなものはないっぽい。Threads.atomic_add!()
などを駆使すれば似たようなことを実現できそうな気はする。