Qt執行緒同步之乙個生產者多個消費者

2021-07-23 14:48:43 字數 812 閱讀 3105

qmutex

qmutex類提供的是執行緒之間的訪問順序化。

qmutex的目的是保護一段**,使得同一時間只有乙個執行緒可以訪問它。但在乙個執行緒中呼叫lock(),其它執行緒將會在同一地點試圖呼叫lock()時會被阻塞,直到這個執行緒呼叫unlock()之後其它執行緒才會獲得這個鎖。

qsemaphore

訊號量qsemaphore可以理解為對互斥量qmutex功能的擴充套件,互斥量只能鎖定一次而訊號量可以獲取多次,它可以用來保護一定數量的同種資源。acquire()函式用於獲取n個資源,當沒有足夠的資源時呼叫者將被阻塞直到有足夠的可用資源。release(n)函式用於釋放n個資源。

乙個例子

qsemaphore vacancy(5); //空位資源

qsemaphore produce(0); //產品數量

qmutex mutex; //互斥鎖

int buffer[5]; //緩衝區可以放5個產品

int numtaken=60;

int takei=0;

class producer:public qthread

;void producer::run() //生產者執行緒

}class consumer:public qthread

;void consumer::run() //消費者執行緒

}int main(int argc, char *argv)

乙個生產者和乙個消費者

我想開發乙個可以允許最多有3個物品的 生產者 消費者 例子 說明的是生產者,消費者都只有乙個 1。代表商店店員 public class clerk catch interruptedexception e this.product system.out.printf 現在共有商品 d n個 thi...

生產者 和 消費者 乙個 小案例

package com.thread 生產者 author cp class prod implements runnable public void run 消費者 author cp class clinet implements runnable public void run 麵包 auth...

生產者消費者模式及乙個例項

給holder中持有的控制項 賦值 music m getitem position holder.tvname.settext m.getname holder.tvauthor.settext m.getauthor holder.tvduration.settext m.getduration...