[英]Is ||= in Ruby thread safe?
这取决于实施。 请注意, x ||= y
会扩展为x || x = y
x || x = y
,只有当x
为false
或nil
时才执行x = y
。
话虽如此,Ruby语言的C实现应该是完全线程安全的。
YARV使用本地线程,以实现并发性,从而也真正的并行运行。 但是,为了保持向后兼容性,引入了全局解释器范围的锁 。
但是,JRuby对代码没有内部锁定,因此您必须在需要时手动同步调用。
有关详细信息,请参阅我给出的有关该主题的另一个答案 。 另外,请阅读JörgWMittag的这个优秀答案,以便更深入地了解各种Ruby实现的线程模型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.