多執行緒 生產者消費者

2021-06-18 04:40:57 字數 1586 閱讀 8399

這個就不多說了,直接上**:

#include

#include

using

namespace

std;  

const

unsigned 

short

size_of_buffer = 10;   

//緩衝區長度 

unsigned short

productid = 0;         

//產品號 

unsigned short

consumeid = 0;         

//將被消耗的產品號 

unsigned short

in = 0;             

//產品進緩衝區時的緩衝區下標 

unsigned short

out = 0;             

//產品出緩衝區時的緩衝區下標 

intg_buffer[size_of_buffer];         

//緩衝區是個迴圈佇列 

critical_section g_cs;             //用於執行緒間的互斥 

handle

g_hfullsemaphore;           

//當緩衝區滿時迫使生產者等待 

handle

g_hemptysemaphore;           

//當緩衝區空時迫使消費者等待 

dword

winapi producer(

lpvoid

);         

//生產者執行緒 

dword

winapi consumer(

lpvoid

);         

//消費者執行緒 

intmain()   

//建立消費者執行緒 

for( i=0; i < consumers_count; ++i)  

sleep(100000);  

deletecriticalsection(&g_cs);  

return

0;   

}   

//生產乙個產品。簡單模擬了一下,僅輸出新產品的id號 

void

produce()   

//把新生產的產品放入緩衝區 

void

}   

//從緩衝區中取出乙個產品 

void

take()   

}   

//消耗乙個產品 

void

consume()   

//生產者 

dword

winapi producer(

lpvoid

lppara)   

return

0;   

}   

//消費者 

dword

winapi consumer(

lpvoid

lppara)   

return

0;   

}  

Linux多執行緒 生產者消費者

生產者消費者問題 這是乙個非常經典的多執行緒題目,題目大意如下 有乙個生產者在生產產品,這些產品將提供給若干個消費者去消費,為了使生產者和消費者能併發執行,在兩者之間設定乙個有多個緩衝區的緩衝池,生產者將它生產的產品放入乙個緩衝區中,消費者可以從緩衝區中取走產品進行消費,所有生產者和消費者都是非同步...

多執行緒 生產者消費者佇列

就以alibaba的筆試題舉例吧。題目大概的意思如下 有乙個籃子,最多容納5個蘋果。有人一直往裡放蘋果。有人一直去蘋果。寫出實現。ali要求不能用concurrent包裡面的東西,所以只能用最簡單的notify和wait。如果可以用concurrent包裡面的東西,還可以用blockingqueue...

多執行緒 生產者和消費者

生產者 消費者問題 生產者向產品區里放產品,當產品區里滿了,需要等待 消費者從產品區里取產品消耗,當產品區里空了,需要等待。public class producerandconsumer 消費者 static class consumer implements runnable catch int...