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


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