Interlocked.MemoryBarrierProcessWide Yöntem

Tanım

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.

Şunlara uygulanır