Exemplo de tecnologia de sincronização de espera
Este exemplo demonstra como usar o WaitHandle classe de sincronização de segmentos. O tipo derivado de WaitHandle Mutex é usado para impor mutuamente acesso a um bloco de código protegido.
Para obter mais informações sobre como usar os exemplos, consulte os seguintes tópicos:
Para compilação a amostra usando o aviso de comando
Aberto o janela do aviso de comando e navegar até um de subpastas específicas do linguagem para a amostra.
Tipo de MSBuild WaitSynchronizationCS.sln or MSBuild WaitSynchronizationVB.sln, dependendo de sua escolha de linguagem de programação, na linha de comando.
Para compilação a amostra usando o Visual Studio
em aberto Windows Explorer e navegar até um de subpastas específicas do linguagem para a amostra.
clicar duas vezes no ícone para WaitSynchronizationCS.sln ou WaitSynchronizationVB.sln, dependendo de sua escolha de linguagem, de programação para em em aberto o arquivo no Visual Studio.
Sobre o Compilação menu, clicar Criar solução.
Para executar este exemplo
navegar até o diretório que contém o novo arquivo executável.
Tipo de Mutex.exe na linha de comando.
Observação: Este exemplo cria um aplicativo de console.Você deve iniciá-la em uma janela de console para exibir sua saída.
Comentários
Este exemplo filas até cinco chamadas de método assíncrono.Cada método, em seguida, aguarda para proprietários do recurso, gravações para o console param e, em seguida, grava no console de uma segunda vez.
Os marcadores a seguintes descrevem brevemente as tecnologias e classes usadas por este exemplo:
Sincronização de Segmento
Mutex Proporciona exclusão mútua para thread sincronização.
AutoResetEvent Segmento principal dos exemplos espera por um AutoResetEvent até que ela seja conjunto. Isso indica que concluíram a última das funções assíncrono fazendo seu trabalho.
WaitHandle O WaitHandle classe é a base de qual ambos Mutex e AutoResetEvent classes (entre outros) são derivados. Esse tipo implementa métodos "espera"para os diversos tipos derivados ir"sinalizado".
Interlocked O exemplo usa o estático Decrement método para acessar uma variável de contador de forma assíncrona para indicar quando a AutoResetEvent deve ser definido.
Threading
- ThreadPool Ao escrever código gerenciado, é recomendável que, sempre que possível, os desenvolvedores usar o QueueUserWorkItem método para implementar chamadas de método assíncrono. Este exemplo usa essa abordagem para executar o código que concorre para um recurso lógico.
Delegados
- WaitCallback Usado para criar um método de retorno de chamada de fortemente tipado para o ThreadPool classe a ser usada.
Para obter mais informações sobre threading e sincronização, consulte os comentários nos arquivos de código e compilação.proj de fonte.