1. 程式人生 > >生產者程序和消費者程序共享記憶體解決方法---迴圈陣列

生產者程序和消費者程序共享記憶體解決方法---迴圈陣列

#define BUFFER_SIZE 10
typedef struct
{
	something;
}item;
item buffer[BUFFER_SIZE];
int in=0;
int out=0;

/*-----------------------------------
in指向緩衝區下一個空位
out指向緩衝區下一個非空位

緩衝區為空的條件:
in==out
緩衝區為滿的條件:
(in+1)%BUFFER_SIZE==out
-----------------------------------*/

//生產者程序
while(1)
{
	while((in+1)%BUFFER_SIZE==out)
	{
		do nothing;		
	}	
	buffer[in]=nextProduced;
	in=(in+1)%BUFFER_SIZE;
}

//消費者程序
while(1)
{
	while(in==out)
	{
		do nothing;	
	}	
	nextConsumed=buffer[out];
	out=(out+1)%BUFFER_SIZE;
}