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 engelin üzerinde hareket etmemesini 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ığı engelleri kullanı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 olanak tanır ve yine de makul paylaşılan erişime sahiptir.

  • Normal bellek engeli çok az ek yük getirir; normal birbirine kenetlenmiş işlemler muhtemelen yüz döngüden daha az maliyetlidir. İşlem genelinde bellek engeli çok pahalıdır. İşlemdeki her CPU'nun, binlerce döngünün olası bir maliyetiyle bir şey yapmaya 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, FlushProcessWriteBuffers Windows ve Linux üzerinde sys_membarrier çağrısı sarmalar.

Şunlara uygulanır