Semaphore Objects
9/8/2008
Um sinal é um entre processos objeto sincronização que mantém uma contagem entre zero e um valor máximo.
O estado objeto está sinalizado quando sua contagem é maior que zero e não sinalizado quando sua contagem é zero.
Um sinal é usado como uma contagem de recurso portão, limitando o uso de um recurso por contagem segmentos à medida que elas transmitir in and out of o portão.
Cada tempo que um segmento em espera é liberado because of o sinalizado estado de um sinal, a contagem de um sinal é diminuído.
Use a função CreateSemaphore para criar um nomeado ou sem nome objeto do semáforo.
O identificador retornado por CreateSemaphore Pode ser usado em qualquer função que requer um identificador para o objeto do semáforo.
Qualquer segmento de uma processo de chamada pode especificar o semáforo identificador em um chamar para uma função de espera.
Use a função ReleaseSemaphore para incremento uma contagem do semáforo. A contagem nunca pode ser menor que zero ou maior que a contagem inicial especificada pelo lInitialCount parâmetro.
Antes um segmento usa o recurso, ele especifica o identificador do semáforo em um chamar para uma função de espera. Quando a função de espera retorna, ele diminui a contagem do semáforo e o segmento em espera é executado.
Quando um segmento termina usando um recurso, o segmento chama ReleaseSemaphore Para incremento a contagem do semáforo.
ReleaseSemaphore Também pode ser usado durante inicialização de um aplicativo.
O aplicativo pode criar um semáforo com uma contagem inicial do zero. Isso define o semáforo como não sinalizado e bloqueia todos os segmentos de acessar o recurso protegido.
Quando o aplicativo termina inicialização, ele usa ReleaseSemaphore Para aumentar a contagem para seu valor máximo e permite acessar normal para o recurso protegido.
Semáforos podem ser usados entre processos ou em um único processo.
Vários processos podem têm alças do mesmo objeto do semáforo. Isso fornece sincronização entre objetos. Sempre usar o CreateSemaphore função, como Windows Embedded CE não implementar o OpenSemaphore função.
Use a função CloseHandle para fechar o identificador. O sistema fecha o identificador quando termina o processo. Quando você fechar o último identificador para um sinal, o objeto do semáforo é destruído.