信号量实现读写锁

写优先

int count=0;//读者数量
int mutex=1;//对count的互斥信号量
int rw=1;//读写互斥
int w=1;//写者等待队列
void wrriter
{
	while(1)
	{
		p(w);//写者等待队列为空
		p(rw);//读写互斥
		wrrite;
		v(rw);
		v(w);
	}
}

void reader()
{
	while(1)
	{
		p(w);//没有写者等待
		p(mutex)
		if(count==0)
			p(rw);//读写互斥
		count++;
		v(mutex);
		v(w);//写者可以申请了
		reading;
		p(mutex)
		count--;
		if(count==0)
			v(rw);//没有读者的话,那么可以开始写了
		v(mutex);
	}
}
原创文章 23 获赞 26 访问量 425

猜你喜欢

转载自blog.csdn.net/weixin_41672404/article/details/106096891
今日推荐