Monitor.Pulse(Object) 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.
Bekleyen kuyruktaki bir iş parçacığına kilitli nesnenin durumundaki bir değişikliği bildirir.
public:
static void Pulse(System::Object ^ obj);
public static void Pulse(object obj);
static member Pulse : obj -> unit
Public Shared Sub Pulse (obj As Object)
Parametreler
- obj
- Object
İş parçacığının beklediği nesne.
Özel durumlar
obj parametresi null'dir.
Çağıran iş parçacığı belirtilen nesnenin kilidine sahip değil.
Açıklamalar
Yalnızca kilidin geçerli sahibi, kullanarak Pulsebekleyen bir nesneye sinyal verebilir.
Şu anda belirtilen nesnedeki kilidin sahibi olan iş parçacığı, kilit için sıradaki iş parçacığına sinyal vermek için bu yöntemi çağırır. Darbe alındıktan sonra bekleyen iş parçacığı hazır kuyruğa taşınır. Çağıran Pulse iş parçacığı kilidi serbest bıraktığında, hazır kuyruktaki bir sonraki iş parçacığı (darbeli iş parçacığı olması gerekmez) kilidi alır.
Important
sınıfı, Monitor yönteminin Pulse çağrıldığını belirten durumu korumaz. Bu nedenle, bekleyen bir iş parçacığı olmadığında çağırırsanızPulse, hiç çağrılmamış gibi Pulse blokları çağıran Wait sonraki iş parçacığı. ve kullanan iki iş parçacığı PulseWait etkileşimde bulunursa, bu kilitlenmeye neden olabilir. Sınıfın AutoResetEvent davranışıyla karşıtlık: yöntemini çağırarak Set bir AutoResetEvent sinyal gönderirseniz ve bekleyen iş parçacığı yoksa, AutoResetEvent iş parçacığı , WaitAnyveya WaitAllçağırana WaitOnekadar sinyalli durumda kalır. bu AutoResetEvent iş parçacığını serbest bırakır ve imzasız duruma döner.
Eşitlenmiş bir nesnenin, kilit tutan iş parçacığına başvuru, kilidi almaya hazır iş parçacıklarını içeren hazır kuyruğa başvuru ve nesnenin durumunda bir değişiklik bildirimi bekleyen iş parçacıklarını içeren bekleme kuyruğu başvurusu gibi çeşitli başvuruları içerdiğini unutmayın.
Pulse, PulseAllve Wait yöntemleri eşitlenmiş bir kod bloğu içinden çağrılmalıdır.
Birden çok iş parçacığına sinyal vermek için yöntemini kullanın PulseAll .