Опитах се да накарам две задачи (корутини) да си сътрудничат, но без резултат. По-долу е това, което имам. Никога не виждам printlns от функциите източник или приемник и извикването на wait() изглежда виси завинаги. Също така се опитах да направя задачата p (източник) глобална променлива, вместо да я предам на sink() като аргумент, но и това не изглежда да работи (дори когато я декларирам вътре sinke() като глобална.
Това е нещо, което открих, че мога да правя много лесно с канали и goroutines в Go.
Също така експериментирах с извикване на yieldto() във функциите source() и sink(), но все още изглежда, че завършвам в задънена улица.
Някой с пример за множество задачи, споделящи данни по някакъв начин? В идеалния случай бих имал конвейер или дълга верига от задачи.
Благодаря ви предварително за помощта.
println("Hello")
function source()
println("source start")
produce("start")
produce("stop")
end
function sink(p::Task)
println("sink start")
println(consume(p))
println(consume(p))
end
a = Task( source )
b = Task( () -> sink(a) )
wait(b)
wait(a)
println("Goodbye")