Julia - Channel コードサンプル

環境

  • 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)

f:id:goropikarikun:20191119232525g:plain

for i in c
    sleep(0.5)
    println("From g: ", i)
end

の部分は channel が close されるまでずっと回り続ける。

Julia には Go の WaitGroup のようなものはないっぽい。Threads.atomic_add!() などを駆使すれば似たようなことを実現できそうな気はする。