多线程环境下的 ruby​​ 原子操作

标签 ruby multithreading arrays

数组的压入和弹出操作是原子的吗? 我可以安全地运行吗

i = array.pop
...
array.push(i)

在 GIL 线程环境中?

最佳答案

你可以看看c代码(array.c) 我相信,如果它调用任何 ruby​​ 方法调用 (rb_funcall),那么它就不是线程安全的。否则应该是……

您可以轻松覆盖#pop 等并让它们拥有自己的同步。

关于多线程环境下的 ruby​​ 原子操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3371770/

相关文章:

arrays - 从其他数组更新哈希值数组

ruby-on-rails - 返回今天和昨天在 ruby​​ on rails 中完成的表列

c - pthread_cond_wait() 同时唤醒两个线程

ios - NSMutableArray 为图像创建问题

c - 如何在 C 中格式化表格

ruby-on-rails - 在 Ruby on Rails 中如何通过键访问对象的 (ActiveRecord::Relation) 值?

ruby-on-rails - Rails,带有整数数组列的模型

multithreading - 命名线程的最佳实践

java - 如何从java中的线程传播异常?

c++ - 使用数组参数和非数组参数调用重载函数