3

次の質問があります。

  1. グローバルコードはどのように実行され、グローバル変数はperlで初期化されますか?
  2. 私が書く場合はpackage_nameを使用します。複数のパッケージで、グローバルコードは毎回実行されますか?
  3. グローバル変数はこのようにスレッドセーフに定義されていますか?
4

1 に答える 1

4

Perlは、各スレッドのすべてのコードと変数の完全なコピーを作成します。スレッド間の通信は、特別にマークされた共有変数を介して行われます(実際には共有されません。各スレッドにはまだコピーがありますが、すべてのコピーが更新されます)。これは他の多くの言語とは大幅に異なるスレッドモデルであるため、スレッドセーフの懸念は異なります。主に、オブジェクトをコピーして新しいスレッドを作成し、それらのオブジェクトがプログラム外の何かに何らかのリソースを持っている場合に何が起こるかを中心にしています(例:データベース接続)。

use私が知る限り、あなたの質問は実際にはスレッドに関連していませんか?使用はいくつかのことを行います。1つは、指定されたモジュールをロードし、その中のトップレベルコードを実行することです。これは、モジュールごとに1回だけ発生し、useステートメントごとに1回は発生しません。

于 2013-03-04T16:22:41.943 に答える