は理由がない構造のためのVolatile.Read、すべてのプリミティブと参照型のためVolatile.Read方法はありますか?同じことがVolatile.Writeに適用されます。同様に古いThread.VolatileReadのメソッドも構造体のメソッドを持っていませんでした。なぜVolatile.Read(ref T location)がありませんか?T:struct?
この背後にある理由は何ですか?私はクラス内で揮発性の構造体を宣言することができますが、なぜこれらのメソッドで揮発性の読み込みを行うことはできませんか?
私は、構造体は、メモリ内の任意のサイズを持つことができるので、だと思うので、あなたは(一般的に)アトミックそれを読むことができません。 – Evk
C#言語は、単一の操作で構造体を読み書きできるという錯覚を生成します。しかし、それはまさに錯覚であり、プロセッサはフィールドにしかアクセスできません。揮発性タイプは、正しく理解していないとかなり危険です。正しく使用しないと、スレッドレースのバグは完全にはデバッグできません。完全なMemoryBarrier()が必要かもしれませんが、ここで 'lock'キーワードを見落としてはいけません。私たちはもちろん言うことはできません、あなたはあなたが意図したものを示していませんでした。 SOを正しく使用しないことも大きな誤りです。 –