單生產者單消費者迴圈無鎖佇列

2021-05-26 04:53:09 字數 810 閱讀 1409

#ifndef _cread_write_queue_h_

#define _cread_write_queue_h_

/* 佇列尺寸 */

#define default_queue_size 12 /* max_count=4096 */

/* size最大30 ,預設為12 */

templateclass cread_write_queue

; cread_write_queue()

; ~cread_write_queue()

;public:

/* 加入 */

bool push( t adata )

else

return(false);

}/* 取出 */

bool pop( t &result )

else

return(false);

}private:

/* 變數 */

t list[max_count];

/* * 如果乙個基本變數被volatile修飾,編譯器將不會把它儲存到暫存器中,

* 是每一次都去訪問記憶體中實際儲存該變數的位置上。這一點就避免了

* 沒有volatile修飾的變數在多執行緒的讀寫中所產生的由於編譯器優化所導致的災難性問題。

*/ volatile unsigned long push_count;

volatile unsigned long pop_count;

};#endif /* _cread_write_queue_h_ */

單生產者,單消費者

單個生產者和單個消費者 include include include include include include define buffer size 5 產品庫存大小 define product cnt 50 產品生產總數 struct product cons buffer void i...

單生產者 單消費者

父親生產蘋果,女兒消費蘋果,當盤子中沒有蘋果的時候父親生產,女兒只能等待,當盤子中有蘋果的還是父親等待女兒消費 package com.cc.day16 public class demo01 定義乙個類,描述消費的產品 定義公共的變數 public string name public int c...

執行緒 單生產者單消費者

單生產者單消費者 乙個生產線成乙個消費執行緒 乙個生產任務乙個消費任務 乙個產品 public class demo5 產品類class p catch interruptedexception e this.name name this.price price system.out.println...