使用乙個mutex解決生產者消費者問題

2021-08-29 23:53:24 字數 1345 閱讀 1147

好吧.乙個mutex 只能解決 乙個生產者, 乙個消費者的情況;

生產消費 具體是這樣的, 2個執行緒同時啟動, 生產線程比如在陣列中放入乙個值, 然後通知消費執行緒,消費執行緒幹完事後再通知生產者.

消費者的核心是 俺永遠只能跟在生產者屁股後面

使用乙個mutex 實現 (當然 只用乙個mutex , 只能讓執行緒去搶占了) , 下乙個例子是用2個事件物件,

const int buff_size = 10;      

struct

share_object;

unsigned int winapi producer_thread( void* lpparameter)

cout << "producer_thread index: " << share_object.index << endl;

share_object.arr[share_object.index++] = 1;

releasemutex(share_object.mutex);

}return 0;

}//唯一要注意的是消費者的**實現

unsigned int winapi consumer_thread( void* lpparameter)

releasemutex(share_object.mutex);}}

return 0;

}int main(int argc, char *argv)

使用事件物件, 也可以使用訊號量, 這2個物件可以等待,而不是直接的搶占:

下面的例子中 mutex 完全可以不加. 直接使用2個事件物件 ,來完成;

const int buff_size = 10;

struct

share_object;

unsigned int winapi producer_thread( void* lpparameter)

cout << "producer_thread index: " << share_object.index << endl;

share_object.arr[share_object.index++] = 1;

releasemutex(share_object.mutex);

setevent(share_object.event_stored);

}return 0;

}unsigned int winapi consumer_thread( void* lpparameter)

return 0;

}int main(int argc, char *argv)

NSCondition 多執行緒解決生產者消費者問題

import viewcontroller.h inte ce viewcontroller 資料緩衝區 property strong,nonatomic nsmutablearray products 執行緒鎖 property strong,nonatomic nscondition cond...

乙個生產者和乙個消費者

我想開發乙個可以允許最多有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...