我正在阅读一些关于 $@ 全局变量的问题,以及由于成功的 evals 将它擦干净,它甚至在它被处理之前如何被破坏。
但是如果它被并发线程中发生的错误破坏了怎么办?新的线程包表示默认情况下不共享内容,这意味着它是少数主流语言之一,使得 '$a = $a;' 默认情况下是确定性的(并且认为人们说 C# 和 Java 在大型项目中比 Perl 更好)。但我不确定特殊的全局变量。
我的直觉告诉我它们就像任何其他变量一样,因此它们不会被共享。我的大脑本能说'让我们检查一下 Stackoverflow 上的向导'。
我查看了 Perldoc 上的线程教程,它涵盖了共享部分中的普通变量,但随后似乎没有涵盖特殊变量。
我可以使用特殊变量而不会有被其他线程破坏的风险,即使我没有先本地化它们?例如,我可以从 $@ 中提取一个值而不用担心并行线程中发生的错误吗?