8

一度に複数のスレッドからローカル変数にアクセスすることに関するいくつかの質問:

  1. 複数のスレッドで変数の値を読み書きしていますが、アクセスを同期する必要がありますか?

  2. 変数はスレッド 1 から数秒ごとに更新され、スレッド 2 から数秒ごとに読み取られてデータベースに更新されます。

  3. ロジックを保持せず、同時実行の問題がない場合、どのような問題が発生する可能性がありますか?

  4. これには volatile を使用する必要がありますか?

編集:

並行性の問題がないことを強調したいと思います。これが私の特定のシナリオです:

を。私の変数の名前はpingLatencyで、ping の遅延を測定します

b. Thread1 は 10 秒ごとに 8.8.8.8 に ping を送信し、レイテンシーをpingLatency

c. Thread2 はpingLatency、10 秒ごとの値で対応するフィールドを更新します。

d. スレッド 2 は、毎回同じデータベース行を更新します。

現在、このデータベース フィールドを使用してネットワーク接続を監視しています。私の質問は - 変数が更新されない、またはスレッド セーフの問題により例外がスローされる状況はあり得ますか? lockやり過ぎのように思えるので、使用は避けたいです。

どう思いますか?

4

3 に答える 3

0

.NET 管理の並列処理が必要な場合は、組み込みの優れた機能を使用してください。 タスクの並列処理。これによりスレッドが管理され、配列/リストが ConcurrentBag などと同じになるように、組み込みのスレッドセーフ変数を使用できます。

于 2013-07-31T16:33:28.047 に答える