рубиновые атомарные операции в многопоточной среде - PullRequest
2 голосов
/ 30 июля 2010

Являются ли операции push и pop для массивов атомарными?Могу ли я безопасно запустить

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

в GIL-Threaded env?

1 Ответ

1 голос
/ 01 августа 2010

Вы можете посмотреть в коде c (array.c), если он вызывает какие-либо вызовы метода ruby ​​(rb_funcall), то я считаю, что он не безопасен для потоков.В противном случае это должно быть ...

Вы можете легко переопределить #pop et al. И заставить их иметь собственную синхронизацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...