perl中全局变量的线程安全性

时间:2013-03-04 16:13:49

标签: perl perl-module

我有以下问题:

  1. 如何在perl中执行全局代码并初始化全局变量?
  2. 如果我写使用package_name;在多个包中,每次执行全局代码吗?
  3. 全局变量是否以这种方式定义为线程安全?

1 个答案:

答案 0 :(得分:4)

Perl为每个线程提供了所有代码和变量的完整副本。线程之间的通信是通过特别标记的shared variables(实际上不共享 - 每个线程中仍有一个副本,但所有副本都会更新)。这是一个与许多其他语言截然不同的线程模型,因此线程安全问题是不同的 - 主要围绕当复制对象以创建新线程时发生的事情,并且这些对象具有某种形式的资源到程序之外的某些东西(例如数据库连接)。

关于use的问题与线程无关,据我所知?使用做了几件事;一个是加载指定的模块并在其中运行任何顶级代码;每个模块只发生一次,而不是每次使用声明一次。