Выдвигает ли переменная в массив потокобезопасную операцию?
У меня есть следующий код Perl:
push(@myArray, $myValue);
Является ли операция атомарной или мне нужно будет использовать блокировки, если несколько потоков будут выполнять одну и ту же операцию во многих потоках?
1 ответ
Решение
Потокобезопасность большинства функций в perl зависит от лежащих в их основе подпрограмм C, а в случае встроенных модулей, таких как push
здесь нет упоминания о безопасности потоков, поэтому вы должны предположить, что это не так.
Проверьте perlthrtut
справочная страница, в частности раздел под названием "Основные семафоры". Используя семафор, вы можете применять взаимное исключение в произвольных разделах кода.