teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

update

2017/06/09 02:15

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -1,5 +1,6 @@
1
1
  条件変数(`pthread_cond_t`)の使い方を誤っています。
2
2
 
3
+ - メインスレッド→サブスレッドに通知する設計ですから、メインスレッド側がSignal、サブスレッド側がWaitする構造になるべきです。
3
- `pthread_cond_wait(cv,m)`関数は、第2引数に指定したミューテックスのロックを保持した状態、つまり`pthread_mutex_lock(m)`~`pthread_mutex_unlock(m)`区間の中で呼び出す必要があります。
4
+ - `pthread_cond_wait(cv,m)`関数は、第2引数に指定したミューテックスのロックを保持した状態、つまり`pthread_mutex_lock(m)`~`pthread_mutex_unlock(m)`区間の中で呼び出す必要があります。
4
5
 
5
6
  手前味噌ですが [条件変数 Step-by-Step入門](http://yohhoy.hatenablog.jp/entry/2014/09/23/193617) にて正しい使い方を解説しています。ご参考までに。