Выдвигает ли переменная в массив потокобезопасную операцию? - PullRequest
6 голосов
/ 22 июля 2010

У меня есть следующий код Perl:

push(@myArray, $myValue);

Является ли операция атомарной или мне нужно будет использовать блокировки, если несколько потоков будут выполнять одну и ту же операцию во многих потоках?

1 Ответ

2 голосов
/ 23 июля 2010

Безопасность потоков большинства функций в perl зависит от их подпрограмм C, и в случае встроенных модулей, таких как push, нет упоминания о безопасности потоков, поэтому вы должны предположить, что это не так.

Посетите справочную страницу perlthrtut, в частности, раздел под названием «Основные семафоры».Используя семафор, вы можете применять взаимное исключение в произвольных разделах кода.

...