3

我有以下问题:

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

1 回答 1

4

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

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

于 2013-03-04T16:22:41.943 回答