【发布时间】:2014-04-22 01:15:19
【问题描述】:
我曾尝试让两个任务(协程)合作,但无济于事。下面是我所拥有的。我从来没有看到来自源函数或接收器函数的 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")
【问题讨论】: