Interlocked.MemoryBarrierProcessWide メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
プロセス全体のメモリ バリアを提供します。これにより、CPU からの読み取りと書き込みがバリアを越えて移動できなくなります。
public:
static void MemoryBarrierProcessWide();
public static void MemoryBarrierProcessWide();
static member MemoryBarrierProcessWide : unit -> unit
Public Shared Sub MemoryBarrierProcessWide ()
注釈
MemoryBarrierProcessWideメソッドは、次のように "normal" MemoryBarrierメソッドとは異なります。
通常のメモリ バリアにより、現在の CPU からの読み取りと書き込みがバリアを越えて移動できなくなります。 プロセス全体のメモリ バリアにより、プロセスで使用されている CPU からの読み取りまたは書き込みがバリアを越えて移動できなくなります。
通常のメモリ バリアでは、データにアクセス するすべての スレッドがバリアを使用している場合、適切な共有アクセスが許可されます。 プロセス全体のメモリ バリアは、 他の CPU と プロセス メモリの同期を強制します (書き込みバッファーのフラッシュや読み取りバッファーの同期など)。 これにより、一部のスレッドでインターロックされていない操作が可能になり、適切な共有アクセスが可能になります。
通常のメモリ バリアはオーバーヘッドをほとんど発生させありません。通常のインターロック操作のコストは 100 サイクル未満である可能性があります。 プロセス全体のメモリ バリアは非常に高価です。 プロセス内のすべての CPU に何らかの処理を強制する必要があります。おそらく数千サイクルのコストがかかります。
MemoryBarrierProcessWideメソッドは、ロックフリープログラミングのすべての微妙な問題にも苦しんでいます。 ただし、このメソッドは、実際に呼び出す必要がある場合に非常に便利です。これはまれです。
このメソッドは、Windows 上で FlushProcessWriteBufferssys_membarrier への呼び出しをラップします。