1, lock, 原子操作的問題, mutex.
2, 同步問題, wait, cond.
這是兩類問題:
mutex是競爭, 髒, 不可信;
同步問題是同步的意思, 以防止有一個死循環一直在那偵聽這種感覺, 操作系統提供掛入等待隊列, 由信號參與喚醒, 效率什麼的好的多.
一般的同步問題編寫的框架:
pthread_mutex_lock(q->mutex);
while( condition false ) //反覆要去判斷條件, 因爲睡眠以後出來還是要判斷條件的
{ // 其實這邊會釋放鎖
pthread_cond_wait(q->flag, q->mutex);
// 這邊繼續take這把鎖
}
condition setting;
flag setting;
pthread_mutex_unlock(q->mutex);
pthread_cond_signal(q->flag);