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

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

push(@myArray, $myValue);

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

1 ответ

Решение

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

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

Другие вопросы по тегам