pthread_cond_wait() で止まり
- std::mutex::lock()
呼び出したスレッドが所有権を取得できるまでブロックする。 - pthread_cond_wait(cond, mutex)
- cond がシグナルされてない ⇒ mutex を開放した上でスレッドスリープする。シグナルされたら再度ロックを取る。そしてロックが取れたら関数を抜ける。
- 本関数でスリープしていても pthread の仕様により spurious wakeup が発生する。
- なので、producer スレッドが弄る値のチェックをした上で pthread_cond_wait() する必要がある。
memo
- 起きている問題: pthread_cond_wait(cond, mutex) から帰ってこない
- 原因
- 1. そもそも cond がシグナルされていない
- 2. cond がシグナルされたけどロックが取れない
- 調べる
-
- Q. 誰がどういうロジックでシグナルするのか?
-
- 原因
コメントを残す