import threading #匯入執行緒庫
import
time
from queue import queue #
佇列class
producer(threading.thread):
#執行緒的繼承類,修改 run 方法
defrun(self):
global
queue
count =0
while
true:
if queue.qsize() <1000:
for i in range(100):
count = count + 1msg = '
生成產品
'+str(count)
queue.put(msg)
#向佇列中新增元素
(msg)
time.sleep(1)
class
consumer(threading.thread):
#執行緒的繼承類,修改 run 方法
defrun(self):
global
queue
while
true:
if queue.qsize() >100:
for i in range(3):
msg = self.name + '
消費了' + queue.get() #
獲取資料
#queue.get()獲取到資料
(msg)
time.sleep(1)
if__name__ == '
__main__':
queue =queue()
#建立乙個佇列
for i in range(500):
queue.put(
'初始產品
'+str(i))
#在 queue 中放入元素 使用 put 函式
for i in range(2):
p =producer()
p.start()
#呼叫producer類的run方法
for i in range(5):
c =consumer()
c.start()
2020-05-07
多執行緒 生產者消費者佇列
就以alibaba的筆試題舉例吧。題目大概的意思如下 有乙個籃子,最多容納5個蘋果。有人一直往裡放蘋果。有人一直去蘋果。寫出實現。ali要求不能用concurrent包裡面的東西,所以只能用最簡單的notify和wait。如果可以用concurrent包裡面的東西,還可以用blockingqueue...
C 實現生產者消費者佇列
結果分析 原始碼位址 首先,我們的生產者與消費者佇列需要滿足同步與互斥關係,就需要一把互斥鎖,以及生產者與消費者各自的條件變數。其次,我們可以利用c 中stl裡的queue佇列來進行實現,但是我們需要對push,pop進行修改,因為stl庫的函式不一定能滿足互斥條件。也就是不一定安全。最後,所有資源...
生產者消費者執行緒
include include include includeusing namespace std typedef int semaphore 訊號量是一種特殊的整型變數 const int size of buffer 5 緩衝區長度 const unsigned short producers...