私はC#を勉強し、私は以下のようにクラスインスタンスのコピーのスレッドセーフで混乱しています:私は混乱していますC#のスレッドの安全性
eg:
classA objA;
classA objB = objA;
objA.field1 = value2; //do I need lock around modification of field1?
//let say we pass the objB to another thread
objB.field1 = value1 //do I need a lock for objB because of the modification of field1?
、C++の背景から来るので、 C#のクラスは参照型です。 objAとobjBの両方が同じメモリを参照している場合は、フィールドへの同時書き込みを保護するためにロックが必要です1。誰かがこれで確認できますか、何か不足していますか?
ありがとうございました。
アトミティとスレッドの安全性は、通常、2つの異なる問題です。しかし、私はC#の専門家ではありません... – Guillaume
他の読み取りや書き込みの間に依存関係がある場合は、はい。しかし、この(おそらく単純化された)例では、書き込みが1つしかないので、一貫性を得るためにロックする必要はありません。ほとんどの場合、あなたはそうします。 –