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


Ruby Ractor.make_shareable用法及代码示例


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

用法

make_shareable(obj, copy: false) → shareable_obj

使 obj 在 ractor 之间可共享。

obj 及其引用的所有对象都将被冻结,除非它们已经可以共享。

如果 copy 关键字是 true ,该方法将在冻结对象之前复制对象这是更安全的选项,但它可能会更慢。

请注意,此方法的规范和实现不成熟,将来可能会更改。

obj = ['test']
Ractor.shareable?(obj)     #=> false
Ractor.make_shareable(obj) #=> ["test"]
Ractor.shareable?(obj)     #=> true
obj.frozen?                #=> true
obj[0].frozen?             #=> true

# Copy vs non-copy versions:
obj1 = ['test']
obj1s = Ractor.make_shareable(obj1)
obj1.frozen?                        #=> true
obj1s.object_id == obj1.object_id   #=> true
obj2 = ['test']
obj2s = Ractor.make_shareable(obj2, copy: true)
obj2.frozen?                        #=> false
obj2s.frozen?                       #=> true
obj2s.object_id == obj2.object_id   #=> false
obj2s[0].object_id == obj2[0].object_id #=> false

另请参阅 Ractor 类文档中的“可共享和不可共享对象”部分。

相关用法


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