OS 读者-写者问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/HarvestWu/article/details/81275914

要求:

1.三个进程P1,P2,P3共享某一资源F;

2.P1只读F;

3.P2只写F;

4.P3先读F后写F;

5.可多进程读F,但只能一个进程写F,且在写时不允许读。


int readcount=0;//记录读者数量
semaphore rmutex=1;//readcount的互斥访问信号量
semaphore mutex=1;//F资源的互斥访问信号量

P1()//只读
{
	while()
	{
		P(rmutex);
		if(readcount==0)P(mutex);
		readcount++;
		V(rmutex);
		READ F;
		P(rmutex);
		readcount--;
		if(readcount==0)V(mutex);
		V(rmutex);
	}
}

P2()//只写
{
	while()
	{
		P(mutex);
		WRITE F;
		V(mutex);
	}
}

P3()//先读后写
{
	while(1)
	{
		P(rmutex);
		if(readcount==0)P(mutex);
		readcount++;
		V(rmutex);
		READ F;
		P(rmutex);
		readcount--;
		if(readcount==0)V(mutex);
		V(rmutex);
		P(mutex);
		WRITE F;
		V(mutex);
	}
}

猜你喜欢

转载自blog.csdn.net/HarvestWu/article/details/81275914