Interlocked.MemoryBarrierProcessWide Metode

Definisi

Menyediakan hambatan memori di seluruh proses yang memastikan bahwa membaca dan menulis dari CPU apa pun tidak dapat bergerak melintasi penghalang.

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

Keterangan

Metode ini MemoryBarrierProcessWide berbeda dari metode "normal" MemoryBarrier sebagai berikut:

  • Hambatan memori normal memastikan bahwa pembacaan dan penulisan dari CPU saat ini tidak dapat bergerak melintasi penghalang. Hambatan memori di seluruh proses memastikan bahwa setiap baca atau tulis dari CPU apa pun yang digunakan dalam proses tidak dapat bergerak melintasi penghubung.

  • Penghalang memori normal memungkinkan akses bersama yang wajar jika setiap utas yang mengakses data menggunakan penghalang. Penghalang memori di seluruh proses memaksa CPU lain untuk disinkronkan dengan memori proses (misalnya, untuk menghapus buffer tulis dan menyinkronkan buffer baca). Ini memungkinkan operasi yang tidak saling mengunci pada beberapa utas dan masih memiliki akses bersama yang wajar.

  • Penghambat memori normal memberlakukan overhead yang sangat sedikit; Operasi normal yang saling di-interlock mungkin membutuhkan biaya kurang dari seratus siklus. Penghalang memori di seluruh proses sangat mahal. Ini harus memaksa setiap CPU dalam proses melakukan sesuatu, dengan kemungkinan biaya ribuan siklus.

Metode ini MemoryBarrierProcessWide juga menderita semua selusin pemrograman bebas kunci. Namun demikian, metode ini bisa sangat berguna ketika Anda benar-benar perlu memanggilnya, yang seharusnya jarang terjadi.

Metode ini membungkus panggilan ke FlushProcessWriteBuffers pada Windows dan sys_membarrier di Linux.

Berlaku untuk