최근에 C#에서 EventWaitHandle의 강력한 동작에 대해 살펴본 결과 자매 응용 프로그램에서 일부 기능을 동일하게 수행하기로 결정했습니다. 유일한 문제는 자매 응용 프로그램이 C로 작성되었다는 것입니다.pthread_cond_t에 대한 EventWaitHandle 동작
큰 문제는 없지만 pthreads는 신호 허용 pthread_cond_t 데이터 유형을 사용하고 있습니다. 내 유일한 질문은 뭔가가 대기하기 전에 cond가 '신호로 표시'될 수 있습니까?
지금 내 테스트에서는 아니오라고 말합니다. 즉, ThreadB가 대기하기 전에 ThreadA가 신호를 보내면 ThreadB는 무한정 대기합니다. C#에서 EventWaitHandle의 기능에 더 가깝게 작동 할 수있는 또 다른 pthread 유형이 있습니까? 객체는 신호를받습니다. 즉, 기다리고있는 첫 번째 스레드가 즉시 전달되어 unsignalled로 설정됩니다.
다른 데이터 구조로 pthread_cond를 래핑하는 것이 너무 어렵지는 않습니다. 하지만이 기능은 이미 pthread 라이브러리에서 사용할 수 있습니까?
신호가 전송되기 전에 대기중인 스레드가 잠겨 있으면 교착 상태가 될 수 있습니다 ... 그렇지 않습니까? –
아뇨, condvar에서 대기 중일 때 lockobj가 해제됩니다 (이것은 조건 변수가 작동하는 방식에 따라 자동 및 원자 적으로 수행됨). 그러나 대기중인 스레드가 다시 실행되기 전에 다시 획득됩니다. –
뮤텍스 해제 동작에 대한 http://www.opengroup.org/onlinepubs/009695399/functions/pthread_cond_wait.html을 참조하십시오. –