Partager via


Interlocked.MemoryBarrierProcessWide Méthode

Définition

Fournit un cloisonnement de mémoire à l’échelle du processus qui garantit que les lectures et les écritures des processeurs ne peuvent pas se déplacer au sein du cloisonnement.

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

Remarques

La MemoryBarrierProcessWide méthode diffère de la méthode « normale » MemoryBarrier comme suit :

  • La barrière de mémoire normale garantit que les lectures et les écritures du processeur actuel ne peuvent pas se déplacer dans la barrière. La barrière de mémoire à l’échelle du processus garantit que toute lecture ou écriture de n’importe quel processeur utilisé dans le processus ne peut pas se déplacer dans la barrière.

  • La barrière de mémoire normale autorise un accès partagé raisonnable si chaque thread accédant aux données utilise des barrières. La barrière de mémoire à l’échelle du processus force d’autres processeurs à synchroniser avec la mémoire du processus (par exemple, pour vider les mémoires tampons d’écriture et synchroniser les mémoires tampons de lecture). Cela permet des opérations non verrouillées sur certains threads et disposent toujours d’un accès partagé raisonnable.

  • La barrière de mémoire normale impose très peu de surcharge; les opérations interblocées normales coûtent probablement moins d’une centaine de cycles. La barrière mémoire à l’échelle du processus est très coûteuse. Il doit forcer chaque uc dans le processus à quelque chose, au coût probable de milliers de cycles.

La MemoryBarrierProcessWide méthode souffre également de toutes les subtilités de la programmation sans verrou. Toutefois, cette méthode peut être extrêmement utile lorsque vous avez réellement besoin de l’appeler, ce qui doit être rare.

Cette méthode encapsule un appel à FlushProcessWriteBuffers sur Windows et sys_membarrier sur Linux.

S’applique à