当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Julia bind方法用法及代码示例


用法:

bind(chnl::Channel, task::Task)

chnl 的生命周期与任务相关联。 Channel chnl 在任务终止时自动关闭。任务中任何未捕获的异常都会传播给 chnl 上的所有服务员。

chnl 对象可以独立于任务终止显式关闭。终止任务对已关闭的 Channel 对象没有影响。

当一个通道绑定多个任务时,第一个终止的任务将关闭通道。当多个通道绑定到同一个任务时,任务的终止将关闭所有绑定的通道。

例子

julia> c = Channel(0);

julia> task = @async foreach(i->put!(c, i), 1:4);

julia> bind(c,task);

julia> for i in c
           @show i
       end;
i = 1
i = 2
i = 3
i = 4

julia> isopen(c)
false
julia> c = Channel(0);

julia> task = @async (put!(c, 1); error("foo"));

julia> bind(c, task);

julia> take!(c)
1

julia> put!(c, 1);
ERROR: TaskFailedException
Stacktrace:
[...]
    nested task error: foo
[...]

相关用法


注:本文由纯净天空筛选整理自julialang.org 大神的英文原创作品 Base.bind — Method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。