小白日記 執行緒同步之條件變數

2021-10-14 15:23:15 字數 309 閱讀 4228

條件變數是一種相對複雜的執行緒同步的方法

條件變數允許執行緒在資源不足時,進入睡眠狀態,直到所有資源都齊備的情況下再將執行緒喚醒。

前面的生產者消費者故事,是有漏洞的,是因為前面的故事沒有考慮到緩衝區小於零,消費者必須等待生產者生產出產品的情況。以及緩衝區已經滿了的時候,生產者必須

等待緩衝區有乙個空位的情況再生產。

這個時候我們就面臨了乙個問題:怎樣在生產者生產了乙個產品,或消費者消費了乙個產品的時候,喚醒可能正在等待的生產者或消費者。

條件變數需要配合互斥量來使用。

他和讀寫鎖一樣,加鎖和解鎖也是用兩個語句來控制的。

小白日記 程序管理之程序同步

為什麼需要程序間的同步 因為如果沒有程序間的同步,那麼程式在執行時就會變得混亂,比如說工廠生產出乙個手機,你取乙個沒問題,但是如果出現了連著取乙個的情況,就會出現問題了。因為程序不配套,整個生產線就亂套了。再比如說,有五個哲學家進餐,他們一人面前放著乙個碗,它們的右邊都放著一根筷子,乙個哲學家餓了就...

執行緒同步之條件變數

程序空間中有乙個儲存量a,該程序空間內存在多個執行緒,這多個執行緒都會訪問到a,或讀或寫,為了保障每個執行緒當前讀到的是正確的a而不是別的執行緒正在修改過程中的a,我們在訪問a之前需要對a進行加鎖,使得我們在訪問a的時候別的執行緒禁止訪問a,這是互斥量鎖。或者允許多個執行緒同時讀a,這是讀寫鎖。還有...

執行緒同步之條件變數

1.條件變數是鎖嗎?不是鎖,但是條件變數能夠阻塞執行緒 條件變數需要和互斥鎖一起使用 互斥量 保護一塊共享資料 條件變數 引起阻塞 2.條件變數的兩個動作?當條件滿足,通知阻塞的執行緒執行緒開始工作 條件不滿足,阻塞執行緒 3.條件變數的型別 pthread cond t 4.主要函式 初始化乙個條...