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.
Kilitli nesnenin durumundaki bir değişikliği bekleme kuyruğundaki bir iş parçacığına 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
parametresidirnull
.
Çağıran iş parçacığı belirtilen nesnenin kilidine sahip değil.
Açıklamalar
Yalnızca kilidin geçerli sahibi kullanarak Pulse
bekleyen 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.
Önemli
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ız Pulse , blokları çağıran Wait sonraki iş parçacığı sanki hiç çağrılmış gibi Pulse . etkileşim için ve Wait kullanan iki iş parçacığı Pulse varsa, 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 bir 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 almak için hazır olan 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ı barındırdığını 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 .