共有変数と thread.Lock

WBOY
リリース: 2024-02-05 22:27:10
転載
1105 人が閲覧しました

共有変数と thread.Lock

質問内容

Java では、アトミック操作または他のスレッド同期メカニズムを使用しない限り、スレッド内の共有変数の値が停止する可能性があります。

CPython の GIL を指定します。私は Lock inc に次のような価値があると考えています。 混乱を招く a = 1 というイディオムでも、代入の前に複数の手順が実行されます。競合状態を防ぐため。

しかし、a = 1 のような場合には、ロックはありません。スレッドが a を更新した後、スレッド A と B に a の異なる値を読み取らせることは可能ですか?

この質問のもう 1 つの方法は、Lock は共有値の伝播を保証しますが、Lock がない場合はそうではないということです。


正解


問題は、a = 1ということではありません。コード全体で a をさまざまな値に設定することだけであれば、ロックは必要ありません。

ただし、コード内の他の場所で a = a 1 を実行しているときに a = 1 を設定している場合は、それらをロックする必要があります。 a = 1 をロックすると、他の誰かが a をインクリメントした場合、それは a を設定する直前または直後に発生します。

したがって、ほとんどの場合、自分が何をしているのかよくわかっていない限り、ロックが最も簡単な解決策です。

以上が共有変数と thread.Lockの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート