有了互斥量為什麼還要條件變數?

2022-08-17 08:12:22 字數 848 閱讀 9600

互斥量已經可以保證執行緒的同步,那為什麼還要弄條件變數?

用**來測試下

#include #include #include #include using namespace std;

queuemsgs;

mutex m;

condition_variable cond;

long long loops = 0;

void writerfunc()

}void readerfunc()

}}int main()

輸出結果:

可以看出來,使用互斥量後執行緒輪訓次數非常非常非常多

#include #include 

#include

#include

using

namespace

std;

queue

msgs;

mutex m;

condition_variable cond;

long

long loops = 0

;void

writerfunc()

}void

readerfunc()

}}int

main()

輸出結果:

可以看出,使用條件變數輪詢次數顯著下降,可以有效降低cpu的佔用率。

有了互斥量,為什麼還需要條件變數?

一。互斥量和條件變數簡介 互斥量 mutex 從本質上說是一把鎖,在訪問共享資源前對互斥量進行加鎖,在訪問完成後釋放互斥量上的鎖。對互斥量進行加鎖以後,任何其他試圖再次對互斥鎖加鎖的執行緒將會阻塞直到當前執行緒釋放該互斥鎖。如果釋放互斥鎖時有多個執行緒阻塞,所有在該互斥鎖上的阻塞執行緒都會變成可執行...

為什麼有了scanf還要getchar

getchar在scanf 後,可以吸收回車符,以便輸入下乙個字元。如 int n char a scanf d n getchar 清除回車符 scanf c a 參考網頁 本markdown編輯器使用stackedit修改而來,用它寫部落格,將會帶來全新的體驗哦 markdown 是一種輕量級標...

有http 了,為什麼還要rpc?

技術應該不是為了使用新技術而去使用,而應該是舊技術存在某些瓶頸,存在難以支撐或者擴充套件性越老越差等問題暴露出來之後,用新技術來進行解決。那rpc最大的優點,或者說它相比簡單的http介面,它的優勢 更適合它的業務場景是怎樣呢?簡單的http又 不足,哪些場景明顯不太適合呢?rpc remote p...