一度に複数のスレッドからローカル変数にアクセスすることに関するいくつかの質問:
複数のスレッドで変数の値を読み書きしていますが、アクセスを同期する必要がありますか?
変数はスレッド 1 から数秒ごとに更新され、スレッド 2 から数秒ごとに読み取られてデータベースに更新されます。
ロジックを保持せず、同時実行の問題がない場合、どのような問題が発生する可能性がありますか?
これには volatile を使用する必要がありますか?
編集:
並行性の問題がないことを強調したいと思います。これが私の特定のシナリオです:
を。私の変数の名前はpingLatency
で、ping の遅延を測定します
b. Thread1 は 10 秒ごとに 8.8.8.8 に ping を送信し、レイテンシーをpingLatency
c. Thread2 はpingLatency
、10 秒ごとの値で対応するフィールドを更新します。
d. スレッド 2 は、毎回同じデータベース行を更新します。
現在、このデータベース フィールドを使用してネットワーク接続を監視しています。私の質問は - 変数が更新されない、またはスレッド セーフの問題により例外がスローされる状況はあり得ますか? lock
やり過ぎのように思えるので、使用は避けたいです。
どう思いますか?