VB.Netは、C#volatileキーワードの同等のものを持っていません。だから、このようなものは、C#の揮発性の変数を宣言することと等価である:VB.NET:私は常にThread.MemoryBarrier()と私の書き込みを完了した場合、それぞれが読む前に、私はThread.MemoryBarrier()を呼び出す必要がありますか?あなたが手動で通常の読み取り前と書き込み後Thread.MemoryBarrier()を呼び出すことによって行われている揮発性実装する必要がありますので
''' <summary>
''' Gets a value indicating whether this instance is disposed.
''' </summary>
Public Property IsDisposed As Boolean
Get
Threading.Thread.MemoryBarrier()
Return _isDisposed
End Get
Private Set(value As Boolean)
_isDisposed = value
Threading.Thread.MemoryBarrier()
End Set
End Property
私は変数に書き込む唯一の場所がセッターを介して行われた場合、読み取りが必要である前に、私は、メモリバリアの疑問に思って、そこに私はいつもスレッドを呼び出します.MemoryBarrier()は書き込み後に発生します。
読み込む前にThread.MemoryBarrier()を安全に削除できますか?
編集:より明確にするために、読み込みごとにメモリフェンスのコストを除去するために、読み込む前にThread.MemoryBarrier()を削除できるかどうかを尋ねています。
[ 'Volatile'クラス(http://msdn.microsoft.com/en-us/library/system.threading.volatile:または、フィールドのラッパーとしてC#で記述された構造体を使用(V = vs.110は)の.aspx)VB.netで動作すべきであると 'Thread'クラスがhttp://msdn.microsoft.com/en-us/library/zdxzk5cw.aspx([' VolatileRead']のような方法が含まれてい) – CodesInChaos
質問は読み込みのメモリフェンスの潜在的に不要なコストを回避するために、読み取り前に、私は無事Thread.MemoryBarrierを削除することができます()です。 –
私はあなたがそれを取り除くと古い読書を得ることができると確信しています。 – CodesInChaos