지금 threadpool에 대해 공부하고 소스를 분석하고 있다.
threadpool은 작업을 관리하는 스레드가 있고 작업을 하는 스레드가 있다.
작업관리 스레드가 wait상태의 작업을하는 스레드에게 signal을 보내서 일을 하게만든다
이 과정에서 signal과 wait간의 호출순서가 궁금해서 검색을 통해 아래 좋은 사이트를 검색하게 되었다.
출처 :
kldp 질문
글을 이해하기 쉽게 그림으로 그려보고자 한다.
signal을 받았다고 바로 작업을 수행하는것이 아니라, 신호 보내는 스레드에서 unlock을 한 후에 작업을 한다
그리고 cond_wait가 실행 되면 현재 lock되있는 mutex를 unlock하고 return 할때 다시 lock해준다.
cond_signal을 실행할때 wait된게 없으면 아무작업도 안한다.
condition variable에 아주 명쾌한 설명 ㅋㅋ
Joinc Condition Variable설명
이 글은 저의 이해 및 정리한 것이므로 사실과 다를 수 있습니다.
틀린점은 지적해주시면 감사하겠습니다.