Pregunta

¿Es seguro que 2 o más hilos llamen al SetEvent de la API de Win32 en el mismo controlador de eventos que no está protegido por una sección crítica?

¿Fue útil?

Solución

Es seguro, pero recuerde que si un hilo lo establece y otro hilo lo establece al mismo tiempo, no recibirá dos notificaciones, solo una; ya que el segundo lo cambió de verdadero a ... verdadero. Si le preocupa esto, use semáforos en su lugar.

Otros consejos

Suponiendo que tiene varios hilos esperando el mismo evento, ejecutando el mismo código.

  1. Si su código no borra el evento hasta que se haya procesado, efectivamente tiene un CS. Dado que el evento permanece señalado hasta que se borra (es decir, no es un conjunto automático), tener varios subprocesos indica que no hace nada excepto girar la CPU.
  2. Si su código lo borra al comienzo del procesamiento o el evento es autorset, entonces tendría múltiples hilos ejecutando la misma función, lo cual no es seguro si estos hilos comparten algo.

no hay restricciones para llamar a SetEvent desde varios subprocesos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top