當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。