因此,最後兩個讀線程都等待條件變量,互斥鎖沒有被鎖住。
函數pthread_cond_wait主要就是用於阻塞線程的,它有兩個參數;第一個是一個指向條件變量的指針,第二個是一個鎖定了的互斥量。
不過,每個條件變量都應該伴有一個互斥。
最終,線程模塊提供了幾個基本的同步方式如鎖、事件,條件變量和旗語。
還要注意,兩個條件變量使用相同的互斥鎖。
這麼做會喚醒所有等待條件變量_ cond的讀線程;讀線程現在隱式地爭奪互斥鎖。
重點論述了多線程數據處理方法中的互斥鎖和條件變量.
條件變量讓開發者能夠實現一個條件,在這個條件下線程執行然後被阻塞。
push方法不依賴於任何條件變量,所以沒有額外的等待。
而POSIX條件變量將是我下一篇文章的主題,其中將説明如何正確使用條件變量。
這正是POSIX條件變量能做的事!