linux 生產者與消費者問題
生產者與消費者問題(也稱執行緒同步問題)
講到執行緒必然會講到執行緒同步,那什麼是執行緒同步楠?
執行緒同步概念:即當有一個執行緒在對記憶體進行操作時,其他執行緒都不可以對這個記憶體地址進行操作,直到該執行緒完成操作, 其他執行緒才能對該記憶體地址進行操作,而其他執行緒又處於等待狀態,實現執行緒同步的方法有很多,臨界區物件就是其中一種。
生產者消費者模型1(三個互斥量)
這裡主要對執行緒與互斥量做初始化與建立的工作,不瞭解的引數可以使用man … 與檢視幫助文件
這裡是一些標頭檔案與一些需要用到的引數
這裡是生產者的回撥函式,注意一下加鎖的順序與釋放鎖的順序,不然可能會造成死鎖,看的小夥伴注意一下
這裡是消費者的回撥函式,互斥量的順序問題注意一下,鎖的粒度也可以稍微調整,為了方便看資訊,暫時沒有去優化鎖的粒度,在高併發的時候,鎖的粒度越小越好
生產者與消費者模型2(條件變數加互斥鎖)
這裡是互斥量,條件變數的一些初始化操作,只建立了一個生產者執行緒與一個消費者執行緒,回撥函式內部採用迴圈來控制
這裡是生產者的回撥函式,當生產了一個產品,就呼叫pthread_cond_signal去喚醒一個阻塞的消費者執行緒
這塊是消費者的回撥函式,pthread_cond_wait函式在條件滿足的時候會立即釋放它佔有的鎖,因此不會造成死鎖
執行結果
由於我設定了執行緒睡眠(sleep),所以會造成連續的add與remove, 但是這並不影響我們的預期
最後我總結一下,可能我不是很會寫部落格,希望大家不要介意,以後會多多的參考別人的部落格,希望能夠以後能夠講解清除
相關文章
- java實現生產者消費者問題Java
- 直觀理解生產者消費者問題
- 面試必問:訊號量與生產者消費者問題!面試
- Python中的生產者消費者問題Python
- 九、生產者與消費者模式模式
- python中多程式消費者生產者問題Python
- 生產者消費者模式模式
- 生產者消費者模型模型
- 作業系統—生產者消費者問題詳解作業系統
- 有名訊號量實現消費者生產者問題
- 生產者消費者問題-C++程式碼實現C++
- 生產消費者模式模式
- python中多執行緒消費者生產者問題Python執行緒
- 多執行緒-生產者消費者問題程式碼1執行緒
- 生產者與消費者之Android audioAndroid
- JAVA執行緒消費者與生產者模型Java執行緒模型
- 讀者寫者與生產者消費者應用場景
- python 生產者消費者模式Python模式
- ActiveMQ 生產者和消費者demoMQ
- 「Kafka應用」PHP實現生產者與消費者KafkaPHP
- PHP操作Beanstalkd佇列(2)生產者與消費者PHPBean佇列
- Java實現生產者和消費者Java
- 新手練習-消費者生產者模型模型
- Java實現生產者-消費者模型Java模型
- 生產者和消費者(.net實現)
- 使用wait()與notifyAll()實現生產者與消費者模式AI模式
- java學習回顧---生產者與消費者問題以及多執行緒補充Java執行緒
- [原創]C#編寫的多生產者多消費者同步問題C#
- 阻塞佇列和生產者-消費者模式佇列模式
- 多執行緒之生產者消費者執行緒
- Java 生產者消費者模式詳細分析Java模式
- 二、(LINUX 執行緒同步) 互斥量、條件變數以及生產者消費者問題Linux執行緒變數
- java進階(40)--wait與notify(生產者與消費者模式)JavaAI模式
- Java 多執行緒基礎(十二)生產者與消費者Java執行緒
- Java多執行緒——消費者與生產者的關係Java執行緒
- Python-多執行緒及生產者與消費者Python執行緒
- python執行緒通訊與生產者消費者模式Python執行緒模式
- 關於Java多執行緒實現生產者和消費者的問題Java執行緒