문제

2 개의 스레드가 임계 섹션으로 보호되지 않는 동일한 이벤트 핸들러에서 Win32 API의 SetEvent를 호출하는 것이 안전합니까?

도움이 되었습니까?

해결책

안전하지만 한 스레드가 설정되고 다른 스레드가 동시에 설정되면 두 개의 알림을받지 못할 것입니다. 두 번째는 그것을 true에서 ... true로 변경했기 때문에. 이것에 대해 걱정이되면 세마포어를 대신 사용하십시오.

다른 팁

동일한 이벤트를 기다리는 여러 스레드가 있다고 가정하면 동일한 코드를 실행합니다.

  1. 코드가 처리가 완료 될 때까지 이벤트를 지우지 않으면 CS가 효과적으로 있습니다. 이벤트는 청소 될 때까지 (일명 Autoreset이 아닌) 신호를받지 않기 때문에 여러 스레드가 CPU를 스핀하는 것 외에는 아무것도하지 않습니다.
  2. 처리 시작시 코드가 지우거나 이벤트가 AutorSet이면 동일한 기능을 실행하는 여러 스레드가 있으면 이러한 스레드가 공유 할 경우 안전하지 않습니다.

여러 스레드에서 SetEvent를 호출하는 데 제한이 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top