多執行緒 生產者消費者問題

2021-10-18 16:37:09 字數 2236 閱讀 7899

package multithreading.pc;

//測試:生產者消費者模型-->利用緩衝區解決:管程法

//生產者,消費者,產品,緩衝區

public

class

testpc

}//生產者

class

productor

extends

thread

//生產

@override

public

void

run()}

}//消費者

class

consumer

extends

thread

//消費

@override

public

void

run()}

}//產品

class

chicken

}//緩衝區

class

syncontainer

catch

(interruptedexception e)

}//如果沒滿,我們就需要丟入產品

chickens[count]

= chicken;

count++

;//可以通知消費者消費了

this

.notifyall()

;}//消費者消費產品

public

synchronized chicken pop()

catch

(interruptedexception e)

}//如果可以消費

count--

; chicken chicken = chickens[count]

;//吃完了,通知生產者生產

來判斷乙個標誌位flag,如果為true,就讓他等待、如果為false,就讓他去通知另外乙個人、把兩人銜接起來,就像咱們的訊號燈紅燈停,綠燈行,通過這樣乙個判斷方式,只要來判斷什麼時候讓他等待,什麼時候將他喚醒就ok。

package multithreading.pc;

//測試生產者消費者問題2:訊號燈法,標誌位解決

public

class

testpc2

}//生產者-->演員

class

player

extends

thread

@override

public

void

run(

)else}}

}//消費者-->觀眾

class

watcher

extends

thread

@override

public

void

run()}

}//產品-->節目

class

tvcatch

(interruptedexception e)

} system.out.

println

("演員表演了:"

+voice)

;//通知觀眾**

this

.notifyall()

;this

.voice = voice;

this

.flag =

!this

.flag;

}//**

public

synchronized

void

watch()

catch

(interruptedexception e)

} system.out.

println

("觀眾**了:"

+voice)

;//通知演員表演

生產者消費者,多執行緒問題

從上乙個小測試當中,我們會發現執行緒之間存在爭奪問題,所以在這裡用上了訊號鎖 include include include include include include include define max size 5 struct data structpro max size sem t ...

多執行緒 生產者消費者

這個就不多說了,直接上 include include using namespace std const unsigned short size of buffer 10 緩衝區長度 unsigned short productid 0 產品號 unsigned short consumeid 0...

linux多執行緒 生產者消費者問題

include include define buffer size 8 struct prodcons 初始化緩衝區結構 void init struct prodcons b 將產品放入緩衝區,這裡是存入乙個整數 void put struct prodcons b,int data 寫資料,並...