プロパティ(null許容でないdoubleまたはint)を持つクラスがある場合、複数のtheadを使用してプロパティを読み書きできますか?
「同期なし」という意味だと思います。
double
とlong
は両方とも64ビット(8バイト)のサイズであり、アトミックに書き込まれることが保証されていません。したがって、バイトパターンABCD EFGHの値から、バイトパターンMNOP QRSTの値に移動する場合、(別のスレッドから)ABCDQRSTまたはMNOPEFGHが表示される可能性があります。
サイズが32ビット以下の適切に整列された値を使用すると、アトミック性が保証されます。(値が適切に整列されるという保証を見たのを覚えていませんが、属性を介して特定のレイアウトを強制しない限り、デフォルトであると思います。)C#4仕様では、アトミック性を扱うセクション5.5で整列についても言及していません。 :
次のデータ型の読み取りと書き込みはアトミックです:bool、char、byte、sbyte、short、ushort、uint、int、float、および参照型。さらに、前のリストの基になる型を持つ列挙型の読み取りと書き込みもアトミックです。long、ulong、double、decimalなどの他のタイプの読み取りと書き込み、およびユーザー定義タイプは、アトミックであることが保証されていません。その目的のために設計されたライブラリ関数を除いて、インクリメントまたはデクリメントの場合など、アトミックな読み取り-変更-書き込みの保証はありません。
さらに、アトミック性はボラティリティと同じではありません。そのため、特別な注意を払わないと、あるスレッドからの読み取りが別のスレッドからの書き込みを「認識」しない場合があります。