用法:
Channel{T=Any}(func::Function, size=0; taskref=nothing, spawn=false)
从 func
创建一个新任务,将其绑定到类型为 T
和大小为 size
的新通道,然后安排任务,所有这些都在一次调用中完成。
func
必须接受绑定通道作为其唯一参数。
如果您需要对创建的任务的引用,请通过关键字参数 taskref
传递 Ref{Task}
对象。
如果是spawn = true
,那么为func
创建的Task可以并行调度到另一个线程上,相当于通过
创建一个task。Threads.@spawn
返回 Channel
。
例子
julia> chnl = Channel() do ch
foreach(i -> put!(ch, i), 1:4)
end;
julia> typeof(chnl)
Channel{Any}
julia> for i in chnl
@show i
end;
i = 1
i = 2
i = 3
i = 4
引用创建的任务:
julia> taskref = Ref{Task}();
julia> chnl = Channel(taskref=taskref) do ch
println(take!(ch))
end;
julia> istaskdone(taskref[])
false
julia> put!(chnl, "Hello");
Hello
julia> istaskdone(taskref[])
true
Julia 1.3
spawn=
参数是在 Julia 1.3 中添加的。这个构造函数是在 Julia 1.3 中添加的。在早期版本的 Julia 中,Channel 使用关键字参数来设置 size
和 T
,但这些构造函数已被弃用。
julia> chnl = Channel{Char}(1, spawn=true) do ch
for c in "hello world"
put!(ch, c)
end
end
Channel{Char}(1) (1 item available)
julia> String(collect(chnl))
"hello world"
相关用法
- Julia Core.NamedTuple用法及代码示例
- Julia Core.ifelse用法及代码示例
- Julia Core.isa用法及代码示例
- Julia Core.typeof用法及代码示例
- Julia Core.UnionAll用法及代码示例
- Julia Core.nfields用法及代码示例
- Julia Core.Function用法及代码示例
- Julia Core.DomainError用法及代码示例
- Julia Core.undef用法及代码示例
- Julia Core.UndefVarError用法及代码示例
- Julia Core.isdefined用法及代码示例
- Julia Core.invoke用法及代码示例
- Julia Core.Array方法用法及代码示例
- Julia Core.getfield用法及代码示例
- Julia Core.ErrorException用法及代码示例
- Julia Core.Vararg用法及代码示例
- Julia Core.NTuple用法及代码示例
- Julia Core.@big_str用法及代码示例
- Julia Core.Type用法及代码示例
- Julia Core.Task用法及代码示例
- Julia Core.Union用法及代码示例
- Julia Core.AssertionError用法及代码示例
- Julia Core.Ref用法及代码示例
- Julia Core.BoundsError用法及代码示例
- Julia Core.Float64方法用法及代码示例
注:本文由纯净天空筛选整理自julialang.org 大神的英文原创作品 Base.Channel — Method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。