pthread를 배우다가 문제가 발생해서 잘 모르겠어서 먼저 코드를 올려보겠습니다
으아악sleep(1)을 주석 처리하면 무한 대기 상태에 빠지게 됩니다. 추가하면(개인적으로는 메인 스레드 신호 이전에 다른 스레드가 이미 깨어나기를 기다리고 있는지 확인하기 위한 것이라고 생각합니다) 정상적으로 두 개의 로그 문장을 출력하고 종료할 수 있습니다. 이 현상이 발생하는 이유는 스레드가 cond_wait 때문에 잠자기 상태에 빠졌기 때문이라고 이해할 수 있습니다. 잠자기 상태에서 cond 신호를 보내야만 깨어날 수 있습니까? 인터넷에서 검색해보니 구체적으로 언급된 기사를 찾을 수 없었습니다. 나에게 조언을 해주실 수 있기를 바랍니다. 아니면 스레드 A가 먼저 cond_signal을 호출하고 그 다음 B가 cond_wait를 호출한다고 가정하면 B가 깨어날 수 있는지 확인하도록 도와주세요.
女神的闺蜜爱上我2017-06-30 09:58:48
pthread_cond_signal() 함수는 지정된 조건 변수 cond에서 차단된 스레드 중 하나 이상을 차단 해제해야 합니다(모든 스레드가 cond에서 차단된 경우). 죽어
불能唤醒。