Pergunta

É seguro ter 2 ou mais segmentos chamar SetEvent do Win32 API no mesmo manipulador de eventos não sendo protegido por uma seção crítica?

Foi útil?

Solução

É seguro, mas lembre-se que, se um Sets segmento em que, e outro segmento define-lo, ao mesmo tempo, você não vai conseguir duas notificações, apenas um; desde o 2º um mudou de True para ... True. Se você está preocupado com isso, use Semáforos vez.

Outras dicas

Supondo que você tenha múltiplas threads esperando no mesmo evento, executando o mesmo código.

  1. Se o seu doesnt código de limpar o evento até seu processamento feito, você efetivamente tem um CS. Desde os restos de eventos sinalizados até que seja limpa (aka não AutoReset), tendo vários segmentos sinalizar o nada faz, exceto rotação da CPU.
  2. Se o seu código limpa-lo no início do tratamento ou o evento é autorset, então você teria múltiplas threads em execução a mesma função, que não é seguro se estes tópicos share nada.

não há restrições na chamada SetEvent de vários segmentos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top