3

2 つのスレッド。配列から要素を猛烈に読み取る最初の要素。2番目は、要素を読み取って任意の量だけインクリメントすることにより、要素を更新することに同様に激怒しています。

これは安全ですか?この状況で何か問題が発生する可能性はありますか? 更新スレッドがまだ更新中のときに、読み取りスレッドが「古い」値を読み取ることは気にしません。リーダーが書き込まれていない数字を読み取らないようにし、例外が発生しないようにしたいだけです。

4

2 に答える 2

9

更新は、intマネージ コードを実行できるすべての CPU アーキテクチャでアトミックです。つまり、書き込みスレッドによって変更された 1 バイトだけの値を読み取ることはありません。32 ビットより大きい値型の値は、アトミックlongdoubleあることが保証されていません。オブジェクト参照も常にアトミックです。

于 2013-09-23T16:55:08.663 に答える
1

これはスレッド セーフではありません。1 つのスレッドが適切なデータを取得できる保証はありません。

于 2013-09-23T16:51:37.583 に答える