Monitor.PulseAll(Object) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Notifica todos os threads em espera de uma alteração no estado do objeto.
public:
static void PulseAll(System::Object ^ obj);
public static void PulseAll (object obj);
static member PulseAll : obj -> unit
Public Shared Sub PulseAll (obj As Object)
Parâmetros
- obj
- Object
O objeto que envia o pulso.
Exceções
O parâmetro obj
é null
.
O thread de chamada não é proprietário do bloqueio do objeto especificado.
Comentários
O thread que atualmente possui o bloqueio no objeto especificado invoca esse método para sinalizar todos os threads aguardando para adquirir o bloqueio no objeto . Depois que o sinal é enviado, os threads de espera são movidos para a fila pronta. Quando o thread que invocou libera PulseAll
o bloqueio, o próximo thread na fila pronta adquire o bloqueio.
Observe que um objeto sincronizado contém várias referências, incluindo uma referência ao thread que atualmente mantém o bloqueio, uma referência à fila pronta, que contém os threads que estão prontos para obter o bloqueio e uma referência à fila de espera, que contém os threads que estão aguardando a notificação de uma alteração no estado do objeto.
Os Pulsemétodos , PulseAll
e Wait devem ser invocados de dentro de um bloco de código sincronizado.
As observações do Pulse método explicam o que acontece se Pulse for chamado quando nenhum thread está aguardando.
Para sinalizar um único thread, use o Pulse
método .