Interlocked.MemoryBarrierProcessWide Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Herhangi bir CPU'dan okuma ve yazma işlemlerinin engelden geçememesini sağlayan işlem genelinde bir bellek engeli sağlar.
public:
static void MemoryBarrierProcessWide();
public static void MemoryBarrierProcessWide ();
static member MemoryBarrierProcessWide : unit -> unit
Public Shared Sub MemoryBarrierProcessWide ()
Açıklamalar
yöntemi aşağıdaki MemoryBarrierProcessWide
gibi "normal" MemoryBarrier yöntemden farklıdır:
Normal bellek engeli, geçerli CPU'dan gelen okuma ve yazmaların engeli geçemesini sağlar. İşlem genelindeki bellek engeli, işlemde kullanılan herhangi bir CPU'dan gelen okuma veya yazma işlemlerinin engeli geçemesini sağlar.
Normal bellek engeli, verilere erişen her iş parçacığında engeller kullanılıyorsa makul bir paylaşılan erişim sağlar. İşlem genelindeki bellek engeli , diğer CPU'ları işlem belleğiyle eşitlemeye zorlar (örneğin, yazma arabelleklerini boşaltmak ve okuma arabelleklerini eşitlemek için). Bu, bazı iş parçacıklarında kilitlenmemiş işlemlere izin verir ve yine de makul paylaşılan erişime sahiptir.
Normal bellek bariyeri çok az ek yük getirir; normal birbirine kilitlenmiş işlemler büyük olasılıkla yüz döngüden daha az maliyetlidir. İşlem genelindeki bellek bariyeri çok pahalıdır. İşlemdeki her CPU'nun binlerce döngünün olası bir maliyetiyle bir şeye yapmasını zorlaması gerekir.
Yöntemi MemoryBarrierProcessWide
ayrıca kilitsiz programlamanın tüm inceliklerinden de muzdariptir. Bununla birlikte, bu yöntem gerçekten çağırmanız gerektiğinde son derece yararlı olabilir, bu nadir olmalıdır.
Bu yöntem, Windows üzerinde FlushProcessWriteBuffers ve Linux üzerinde sys_membarrier çağrısını sarmalar.