perl中全局变量的线程安全

pra*_*kvs 3 perl perl-module

我有以下问题:

  1. perl 中如何执行全局代码和初始化全局变量?
  2. 如果我写 use package_name; 在多个包中,每次都会执行全局代码吗?
  3. 这样定义的全局变量线程安全吗?

yst*_*sth 5

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

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