는 다음과 같은 상황을 생각해 보자.대기 (POSIX 스레드, C++)
bar()가 foo의 상태를 절대로 변경하지 않으므로 여러 번 병렬로 실행하는 것이 좋습니다.
외부에서 ("작업자"스레드 중 하나가 아닌 다른 스레드에서) foo의 상태를 변경해야 할 때 문제가 발생합니다. 호출 스레드가 차단 될 때까지 foo를 잠글 수있는 방법은 무엇입니까? 마지막 작업자 스레드는 bar()로 끝나고 foo를 다시 릴리스 할 때까지 모든 작업자 스레드가 bar()에서 차단됩니까?
분명히 bar() 실행 중에 잠긴 상태의 뮤텍스를 사용할 수 없습니다. 왜냐하면 거기에 동시성이 없기 때문입니다.
아이디어가 있으십니까? 아니면 이러한 유형의 문제에 대한 더 나은 디자인이 있습니까?
[Readers-writer lock] (http://en.wikipedia.org/wiki/Readers%E2%80%93writer_lock) – hmjd
바 기능 호출과 관련하여 작업자 스레드에 뮤텍스를 도입하지 않는 이유는 무엇입니까? 또한 foos 상태를 변경하려는 호출 스레드에서. 호출 쓰레드는 뮤텍스를 잠그고 안전하게 foo의 상태를 변경할 수있다. – mgr
'pthread_rwlock_t'는 당신에게 흥미로울 것입니다. – WhozCraig