Interlocked.MemoryBarrierProcessWide Interlocked.MemoryBarrierProcessWide Interlocked.MemoryBarrierProcessWide Interlocked.MemoryBarrierProcessWide Method

Definizione

Offre una barriera di memoria estesa ai processi che assicura che le letture e le scritture da qualsiasi CPU non possano superare la barriera.Provides a process-wide memory barrier that ensures that reads and writes from any CPU cannot move across the barrier.

public:
 static void MemoryBarrierProcessWide();
public static void MemoryBarrierProcessWide ();
static member MemoryBarrierProcessWide : unit -> unit
Public Shared Sub MemoryBarrierProcessWide ()

Commenti

Il MemoryBarrierProcessWide metodo è diverso dal metodo "Normal" MemoryBarrier , come indicato di seguito:The MemoryBarrierProcessWide method differs from the "normal" MemoryBarrier method as follows:

  • La barriera di memoria normale garantisce che le letture e le Scritture dalla CPU corrente non possano spostarsi attraverso la barriera.The normal memory barrier ensures that the reads and writes from the current CPU can't move across the barrier. La barriera di memoria a livello di processo assicura che eventuali letture o scritture da qualsiasi CPU utilizzata nel processo non possano spostarsi attraverso la barriera.The process-wide memory barrier ensures that any read or write from any CPU being used in the process can't move across the barrier.

  • La barriera di memoria normale consente un accesso condiviso ragionevole se ogni thread che accede ai dati USA barriere.The normal memory barrier allows reasonable shared access if every thread accessing the data uses barriers. La barriera di memoria a livello di processo impone la sincronizzazione di altre CPU con la memoria del processo, ad esempio per scaricare i buffer di scrittura e sincronizzare i buffer di lettura.The process-wide memory barrier forces other CPUs to synchronize with process memory (for example, to flush write buffers and synchronize read buffers). In questo modo è possibile ottenere operazioni non interbloccate su alcuni thread e avere comunque un accesso condiviso ragionevole.This allows for non-interlocked operations on some threads and still have reasonable shared access.

  • La barriera di memoria normale impone un sovraccarico molto ridotto; le normali operazioni Interlocked probabilmente costano meno di cento cicli.The normal memory barrier imposes very little overhead; normal interlocked operations probably cost fewer than a hundred cycles. La barriera di memoria a livello di processo è molto costosa.The process-wide memory barrier is very expensive. Deve forzare ogni CPU del processo a qualcosa, a un costo probabile di migliaia di cicli.It has to force every CPU in the process do to something, at a probable cost of thousands of cycles.

Il MemoryBarrierProcessWide metodo soffre anche di tutte le sottigliezze della programmazione senza blocco.The MemoryBarrierProcessWide method also suffers from all the subtleties of lock-free programming. Questo metodo, tuttavia, può essere estremamente utile quando è effettivamente necessario chiamarlo, che dovrebbe essere raro.Nevertheless, this method can be extremely useful when you actually need to call it, which should be rare.

Questo metodo esegue il wrapping di una chiamata a FlushProcessWriteBuffers in Windows e sys_membarrier in Linux.This method wraps a call to FlushProcessWriteBuffers on Windows and sys_membarrier on Linux.

Si applica a