__author__ = 'll_ying''''生產者消費者模型:生產者必須等到佇列有空間踩可以繼續投放商品,如果空間已滿,則需要等待消費者消耗商品。
生產者必須在等待時間內釋放佇列的佔有權,然後消費者才能消耗了商品通知生產者佇列有空間。
'''importthreading
con = threading.condition()
classproducer(threading.thread):
def__init__(self
, threadname):
threading.thread.__init__(self
, name=threadname)
defrun(self):
globalx
con.acquire()
ifx == 1000000:
con.wait()
passelse:
foriinrange(1000000):
x = x + 1
con.notify()
print(x)
con.release()
classconsumer(threading.thread):
def__init__(self
, threadingname):
threading.thread.__init__(self
, name=threadingname)
defrun(self):
globalx
con.acquire()
ifx == 0:
con.wait()
passelse:
foriinrange(1000000):
x = x - 1
print(x)
con.release()
x = 0
p = producer('producer')
c = consumer('consumer')
p.start()
c.start()
p.join()
c.join()
print(x)
'''wait()等待掛起
notify()喚起另外乙個執行緒
執行緒在acquire和release之間保證同一時間允許乙個執行緒修改資料
'''
boost條件變數使用
條件變數和互斥變數都是boost庫中被封裝的類。條件變數是thread庫提供的一種等待執行緒同步的機制,可實現執行緒間的通訊,它必須與互斥量配合使用,等待另乙個執行緒中某個事件發生後本執行緒才能繼續執行。互斥量是一種用於多執行緒程式設計的手段,它可以在多執行緒程式設計中防止多個執行緒同時操作共享資源...
條件變數pthread cond t使用示例
示例 cpp view plain copy include include include pthread mutex t mutex pthread mutex initializer 初始化互斥鎖 pthread cond t cond pthread cond initializer 初始化...
Linux條件變數的使用
linux執行緒同步之間存在多種機制,條件變數是一種類似作業系統裡提到的生產者 消費者演算法的同步機制,允許執行緒以無競爭的方式等待特定條件的發生。示例偽 void thread1 void void thread2 void 條件變數需要配合互斥量一起使用,互斥量作為引數傳入wait函式,函式把呼...