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


Ruby Ractor.yield用法及代码示例


本文简要介绍ruby语言中 Ractor.yield 的用法。

用法

yield(msg, move: false) → nil

向当前 ractor 的传出端口发送一条消息以供 take 使用。

r = Ractor.new {Ractor.yield 'Hello from ractor'}
puts r.take
# Prints: "Hello from ractor"

该方法是阻塞的,只有当有人消费了发送的消息时才会返回。

r = Ractor.new do
  Ractor.yield 'Hello from ractor'
  puts "Ractor: after yield"
end
wait
puts "Still not taken"
puts r.take

这将打印:

Still not taken
Hello from ractor
Ractor: after yield

如果传出端口用 close_outgoing 关闭,该方法将引发:

r = Ractor.new do
  close_outgoing
  Ractor.yield 'Hello from ractor'
end
wait
# `yield': The outgoing-port is already closed (Ractor::ClosedError)

move 参数的含义与 send 相同。

相关用法


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