数组的压入和弹出操作是原子的吗? 我可以安全地运行吗
i = array.pop
...
array.push(i)
在 GIL 线程环境中?
最佳答案
你可以看看c代码(array.c) 我相信,如果它调用任何 ruby 方法调用 (rb_funcall),那么它就不是线程安全的。否则应该是……
您可以轻松覆盖#pop 等并让它们拥有自己的同步。
关于多线程环境下的 ruby 原子操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3371770/