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


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
[...]

用法二

bind(socket::Union{TCPServer, UDPSocket, TCPSocket}, host::IPAddr, port::Integer; ipv6only=false, reuseaddr=false, kws...)

socket 绑定到给定的 host:port 。请注意,0.0.0.0 将侦听所有设备。

  • ipv6only 参数禁用双堆栈模式。如果 ipv6only=true ,则仅创建 IPv6 堆栈。
  • 如果 reuseaddr=true ,如果多个线程或进程都设置了 reuseaddr=true ,则它们可以毫无错误地绑定到同一个地址,但只有最后一个绑定的进程才能接收任何流量。

相关用法


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