Monitor.Pulse(Object) Yöntem

Tanım

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 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.

Ö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 .

Şunlara uygulanır

Ayrıca bkz.