• 113545

    文章

  • 803

    评论

  • 12

    友链

  • 最近新加了换肤功能,大家多来逛逛吧~~~~
  • 喜欢这个网站的朋友可以加一下QQ群,我们一起交流技术。

进程调度-信号量:生产者与消费者

撸了今年阿里、腾讯和美团的面试,我有一个重要发现.......>>

题目:妈妈在桌上放一个苹果,儿子拿走一个苹果。并且不能同时进行。桌上最多只能放10个苹果。

生产者、消费者的特点:

  • 容器 <= 容量
  • 生产者 关注 【剩余空间】
  • 消费者 关注 【占用空间】
  • 互斥:对容器进行修改,需要保证互斥

剩余空间、占用空间分别需要一个信号量。由于不能同时进行,保证互斥需要一个信号量

解题步骤:

  • 画图理解题目
  • 判断题目类型
  • 分析进程数量,填写进程模板
  • 补充基本代码
  • 补充PV操作
  • 检查调整

妈妈

semaphore full = 0; // 占用空间
semaphore empty = 10; // 剩余空间
semaphore s = 1; // 保证互斥
mom() {
	while (true) {
		p(empty); // 检查剩余空间,没有则阻塞
		p(s) // 保证互斥
	 	放苹果
		v(s) // 保证互斥
		v(full); // 检查是都由等待 full并唤醒
	}
}

儿子

son() {
	while (true) {
		p(full); // 检查占有空间, 没有就等待
		p(s) // 保证互斥
	 	拿苹果
		v(s) // 保证互斥
		v(empty); // 剩余空间+1,检查mon是否等待并唤醒
	}
}

695856371Web网页设计师②群 | 喜欢本站的朋友可以收藏本站,或者加入我们大家一起来交流技术!

0条评论

Loading...


自定义皮肤 主体内容背景
打开支付宝扫码付款购买视频教程
遇到问题联系客服QQ:419400980
注册梁钟霖个人博客