OS_PV操作_6.公园相亲问题

公园相亲问题

某公园举行相亲大会,但要求如下:
(1)每次只能从公园门进入1人(男或女);
(2)-50<=男相亲人数-女相亲人数<=100。
试用P、V操作描述男、女相亲人入园的并发过程。

这个其实和仓库问题是一样的

Semaphore male = 100;
Semaphore female = 50;
//代表还能进入公园的数量

Semaphore mutex = 1;

process_male() {
	while(1){
		P(male); //男人准备进入
		P(mutex);
			男人进入;
			//男人进入后还能进入公园的男人的数量-1
		V(mutex);
		V(female); //还能进入女人的数量+1
	}
}

process_female() {
	while(1){
		P(female); //女人准备进入
		P(mutex);
			女人进入;
			//女人进入后还能进入公园的女人的数量-1
		V(mutex);
		V(male); //还能进入男人的数量+1
	}
}

加一个条件

(3)公园最多容纳500个人。(先不考虑出公园)

Semaphore total = 500
Semaphore male = 100;
Semaphore female = 50;
//代表还能进入公园的数量

Semaphore mutex = 1;

process_male() {
	while(1){
		P(male);  //男人准备进入
		P(total); //还能进入的人的数量-1
		P(mutex);
			男人进入;
			//男人进入后还能进入公园的男人的数量-1
		V(mutex);
		V(female); //还能进入女人的数量+1
	}
}

process_female() {
	while(1){
		P(female); //女人准备进入
		P(total);  //还能进入的人的数量-1
		P(mutex);
			女人进入;
			//女人进入后还能进入公园的女人的数量-1
		V(mutex);
		V(male); //还能进入男人的数量+1
	}
}

条件变一下

(3)公园最多容纳500个人。(考虑相亲后出公园的过程,每次只能运行1人进/出公园)

Semaphore total = 500
Semaphore male = 100;
Semaphore female = 50;
//代表还能进入公园的数量

Semaphore mutex = 1;

process_male_i() {
	P(male);  //男人准备进入
	P(total); //还能进入的人的数量-1
	P(mutex);
		男人进入;
		//男人进入后还能进入公园的男人的数量-1
	V(mutex);
	V(female); //还能进入女人的数量+1
	相亲;
	P(mutex);
		男人出去;
	V(mutex);
	V(male);
	V(total); //还能进入的人的数量+1
}

process_female_j() {
	P(female); //女人准备进入
	P(total);  //还能进入的人的数量-1
	P(mutex);
		女人进入;
		//女人进入后还能进入公园的女人的数量-1
	V(mutex);
	V(male); //还能进入男人的数量+1
	相亲;
	P(mutex);
		女人出去;
	V(mutex);
	V(female);
	V(total); //还能进入的人的数量+1
}
  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哇咔咔负负得正

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值