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


Ruby Ractor.new用法及代碼示例

本文簡要介紹ruby語言中 Ractor.new 的用法。

用法

new(*args, name: nil) {|*args| block } → ractor

使用 args 和一個塊創建一個新的 Ractor

塊( Proc )將被隔離(無法訪問外部變量)。塊內的 self 將引用當前的 Ractor

r = Ractor.new { puts "Hi, I am #{self.inspect}" }
r.take
# Prints "Hi, I am #<Ractor:#2 test.rb:1 running>"

傳遞給方法的args 將按照與通過 send /Ractor.receive 傳遞的對象相同的規則傳播到塊參數:如果args 不可共享,它們將被複製(通過深度克隆,這可能效率低下)。

arg = [1, 2, 3]
puts "Passing: #{arg} (##{arg.object_id})"
r = Ractor.new(arg) {|received_arg|
  puts "Received: #{received_arg} (##{received_arg.object_id})"
}
r.take
# Prints:
#   Passing: [1, 2, 3] (#280)
#   Received: [1, 2, 3] (#300)

Ractor 的name 可以設置為調試目的:

r = Ractor.new(name: 'my ractor') {}
p r
#=> #<Ractor:#3 my ractor test.rb:1 terminated>

相關用法


注:本文由純淨天空篩選整理自ruby-lang.org大神的英文原創作品 Ractor.new。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。