Interlocked.MemoryBarrierProcessWide Metódus

Definíció

Egy folyamatszintű memóriakorlátot biztosít, amely biztosítja, hogy az olvasási és írási műveletek nem haladhatók át az akadályon.

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

Megjegyzések

A MemoryBarrierProcessWide módszer a következőképpen különbözik a "normál" MemoryBarrier módszertől:

  • A normál memóriakorlát biztosítja, hogy az aktuális processzorból érkező olvasások és írások ne tudjanak áthaladni az akadályon. A folyamatszintű memóriakorlát biztosítja, hogy a folyamat során használt processzorok olvasása vagy írása ne haladjon át az akadályon.

  • A normál memóriakorlát ésszerű közös hozzáférést tesz lehetővé, ha minden adathoz hozzáférő szál korlátokat használ. A folyamatszintű memóriakorlát arra kényszerít más processzorokat , hogy szinkronizáljanak a folyamatmemóriával (például az írási pufferek kiürítéséhez és az olvasási pufferek szinkronizálásához). Ez lehetővé teszi egyes szálak nem összekapcsolt műveleteit, és továbbra is ésszerű közös hozzáféréssel rendelkezik.

  • A normál memóriakorlát nagyon kevés többletterhelést ró; a normál összekapcsolt műveletek valószínűleg száznál kevesebb ciklusba kerülnek. A folyamatszintű memóriakorlát nagyon költséges. A folyamat minden cpu-jának meg kell tennie valamit, több ezer ciklus valószínű költségén.

A MemoryBarrierProcessWide módszer a zárolásmentes programozás minden finomságától is szenved. Ennek ellenére ez a módszer rendkívül hasznos lehet, ha valójában meg kell hívnia, ami ritka lehet.

Ez a metódus a FlushProcessWriteBuffers hívását csomagolja be Windows és sys_membarrier Linuxon.

A következőre érvényes: