在学习通道绑定时,我发现当我在REPL写下 c=Channel(0)
,返回的是Channel{Any}(sz_max:0,sz_curr:0)
创建一个协程任务
julia> task=@async foreach(i->put!(c,i),1:4)
Task (runnable) @0x00007f3f1015dfc0
此时绑定通道
julia>bind(c,task)
Channel{Any}(sz_max:0,sz_curr:1)
sz_max居然小于sz_curr了
取出Channel中数据
julia> for i in c
@show i
end
返回
i = 1
i = 2
i = 3
i = 4
这样以后查看c
julia> c
Channel{Any}(sz_max:0,sz_curr:0)
sz_curr又变为0
如果直接对c进行put!的话,会造成阻塞,而在通道绑定时却没有这样的情况,请问这是为什么