Interlocked.MemoryBarrierProcessWide Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
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.