小编Ric*_*mer的帖子

Julia:在协程(任务)之间传递数据

我试图让两个任务(协同程序)合作,但无济于事.以下是我所拥有的.我从来没有看到来自源或接收器功能的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)

task coroutine julia

7
推荐指数
1
解决办法
1878
查看次数

标签 统计

coroutine ×1

julia ×1

task ×1