スレッド間の共有変数で += が使用されているプログラムに遭遇しましたが、+= はスレッドセーフですか? つまり、加算と代入をアトミックに実行しますか?
質問する
1162 次
4 に答える
10
いいえ、次と同等であるため、スレッドセーフではありません。
int temp = orig + value;
orig = temp;
代わりに使用できますInterlocked.Add
:
Interlocked.Add(ref orig, value);
于 2013-10-11T20:50:37.513 に答える
2
あなたがしたい
System.Threading.Interlocked.Add()
于 2013-10-11T20:50:38.607 に答える
0
迅速な回答ありがとうございます。はい、+= はスレッド セーフではありません。これを確認するには、次の簡単なプログラムを実行します。
int count = 0;
Parallel.For(0, 10000, i =>
{
count +=1; // not thread safe
});
Console.WriteLine(count);
于 2013-10-12T04:22:32.283 に答える