共有変数と thread.Lock

WBOY
WBOY転載
2024-02-05 22:27:101080ブラウズ

共有変数と 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 までご連絡ください。