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


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。