将变量推送到数组上的线程安全操作?

Mik*_*ike 6 perl multithreading thread-safety reentrancy

我有以下Perl代码:

push(@myArray, $myValue);
Run Code Online (Sandbox Code Playgroud)

如果多个线程将在许多线程上执行相同的操作,那么操作是原子的,还是需要使用锁?

mae*_*ics 2

Perl 中大多数函数的线程安全性取决于它们的底层 C 例程,对于内置函数,就像push没有提到线程安全一样,所以您必须假设它不是。

查看perlthrtut手册页,特别是标题为“基本信号量”的部分。使用信号量,您可以在代码的任意部分强制执行互斥。