我试图让两个任务(协同程序)合作,但无济于事.以下是我所拥有的.我从来没有看到来自源或接收器功能的printlns,并且wait()调用似乎永远挂起.我也尝试将p(源)任务作为一个全局变量,而不是将它作为参数传递给sink(),但这似乎也不起作用(即使我在sinke()中将其声明为全局变量.
这是我发现我可以通过Go中的频道和goroutine轻松完成的事情.
我还尝试在source()和sink()函数中调用yieldto(),但我似乎仍然以死锁结束.
有多个任务示例的人以任何方式共享数据?理想情况下,我会有一个管道或长链任务.
在此先感谢您的帮助.
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")
Run Code Online (Sandbox Code Playgroud)