其實這個模型就是通知乙個收乙個發,鎖是為了解決內部矛盾,訊號量解決外部矛盾
#include #include #include #include #include #include #include #include /* see notes */
#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;
#define pthread_sum 10
int gs;
sem_t gsem_produce;
sem_t gsem_custom;
pthread_mutex_t pro_mutex;//生產者互斥量
pthread_mutex_t cus_mutex;//消費者互斥量
//生產者
void* add (void* num)
int main() }
for (i = 5; i < 10; i++) }
for (i = 0; i < 5; i++)
sleep(2);
cout << "thread end" << endl;
return 0;
}
多執行緒 生產者和消費者
生產者 消費者問題 生產者向產品區里放產品,當產品區里滿了,需要等待 消費者從產品區里取產品消耗,當產品區里空了,需要等待。public class producerandconsumer 消費者 static class consumer implements runnable catch int...
多執行緒 生產者和消費者
前面說過,每個執行緒都有自己的資源,但是 區是共享的,即每個執行緒都可以執行相同的函式。這可能帶來的問題就是幾個執行緒同時執行乙個函式,導致資料的混亂,產生不可預料的結果,因此我們必須避免這種情況的發生。c 提供了乙個關鍵字lock,它可以把一段 定義為互斥段 critical section 互斥...
多執行緒 生產者消費者
這個就不多說了,直接上 include include using namespace std const unsigned short size of buffer 10 緩衝區長度 unsigned short productid 0 產品號 unsigned short consumeid 0...