6

私は$@グローバル変数に関するいくつかの質問を読んでいて、評価が成功してそれをきれいに消去したために、処理される前にそれをどのように壊すことができるかを読んでいました。

しかし、並行スレッドで発生するエラーによってそれが破壊された場合はどうなりますか?新しいスレッドパッケージは、デフォルトでは共有されないことを示しています。つまり、「$ a =$a;」を作成する数少ない主流言語の1つです。デフォルトでは決定論的です(そして、大規模なプロジェクトでは、C#とJavaがPerlよりも優れていると人々が言うと思います)。しかし、特別なグローバル変数についてはよくわかりません。

私の本能は、それらが他の変数とまったく同じであると言っているので、それらは共有されません。私の脳の本能は、「Stackoverflowのウィザードで確認しましょう」と言っています。

Perldocのスレッドチュートリアルを確認しました。共有セクションで通常の変数について説明していますが、特別な変数については説明していません。

最初にローカライズしなくても、他のスレッドによってそれらが破壊されるリスクなしに特別な変数を使用できますか?たとえば、並列スレッドで発生するエラーを心配せずに$ @から値を引き出すことはできますか?

4

1 に答える 1

6

あなたの内臓は正しいです、彼らは共有されていません!

于 2011-07-19T20:48:04.397 に答える