首页 > 解决方案 > Channel:不同核之间的通信

问题描述

我想在两个不同内核上运行的两个函数之间有一个通道。以下代码不起作用:

c1=Channel(32)   
@spawnat 2 put!(c1,1)
@spawnat 3 println(c1)

println 告诉我核心 3 上的通道 c1 是空的。我没有错误。不知何故,核心 3 上的功能看到与核心 2 不同的通道 c1。

标签: juliachannel

解决方案


Channel用于协同程序之间的通信(又名绿色线程)。

对于通常使用的分布式计算- 请参阅Julia 手册remotecall中的此示例:

$ ./julia -p 2

julia> r = remotecall(rand, 2, 2, 2)
Future(2, 1, 4, nothing)

julia> s = @spawnat 2 1 .+ fetch(r)
Future(2, 1, 5, nothing)

julia> fetch(s)
2×2 Array{Float64,2}:
 1.18526  1.50912
 1.16296  1.60607

根据您的实际情况,您应该查看以下用于使用 Julia 进行分布式计算的库:


推荐阅读