当前位置: 首页 > news >正文

哲学家进餐问题

1.最多允许四个哲学家同时进餐,保证有一个筷子是空闲的,从而保证能有有一个哲学家成功进餐,而不导致死锁

semaphore chopstick[5] = {1, 1, 1, 1, 1}, mutex=4;
Pi(){do{think...P(mutex);P(chopstick[i]);P(chopstick[(i+1)%5);eat...V(mutex);V(chopstick[i]);V(chopstick[(i+1)%5);}while(1);
}

2.给哲学家编号,要求奇数哲学家先拿左边的筷子,再拿右边的筷子,而偶数哲学家相反

semaphore chopstick[5] = {1,1,1,1,1}; 		//初始化信号量void philosopher(int i){do {thinking...	if(i%2 == 1){P(chopstick[i]);//判断哲学家左边的筷子是否可用P(chopstick[(i+1)%5]);//判断哲学家右边的筷子是否可用}else{P(chopstick[(i+1)%5]);//判断哲学家右边的筷子是否可用P(chopstick[i]);//判断哲学家左边的筷子是否可用}eat...V(chopstick[i]);V(chopstick[(i+1)%5]);}while(1);
}

3.一名哲学家左右两边的筷子均可用
时,才允许进餐

semaphore chopstick[5] = {1, 1, 1, 1, 1},mutex=1;
Pi(){do{think...P(mutex); //使用一个互斥信号量,保证拿起左右两边的筷子是一气呵成的操作P(chopstick[i]);p(chopstick[(i+1)%5]);V(mutex);eating...V(chopstick[i]);V(chopstick[(i+1)%5]);}while(1);
}

相关文章:

  • SSL/TLS和HTTPS
  • mysql的双机热备
  • Linux “ 软件管理 “
  • SHELL脚本学习(七) 脚本控制
  • 免费学习通刷课(免费高分)Pro版
  • American Social Welfware (1600-1940)
  • oracle的bitmap索引是什么
  • 【Python数据魔术】:揭秘类型奥秘,赋能代码创造
  • 2024前端面试准备-HTMLCSS
  • AnythingLLM 的 Docker 使用
  • mysql (事物)
  • java计算年化利率
  • 智能合约漏洞类型
  • MySQL之查询性能优化(十一)
  • ffmpeg实现视频播放 ----------- Javacv
  • [Vue CLI 3] 配置解析之 css.extract
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • 4. 路由到控制器 - Laravel从零开始教程
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • eclipse的离线汉化
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • MySQL几个简单SQL的优化
  • Node + FFmpeg 实现Canvas动画导出视频
  • node和express搭建代理服务器(源码)
  • PAT A1050
  • React-生命周期杂记
  • SpingCloudBus整合RabbitMQ
  • 聊聊directory traversal attack
  • No resource identifier found for attribute,RxJava之zip操作符
  • 湖北分布式智能数据采集方法有哪些?
  • 如何在招聘中考核.NET架构师
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • #微信小程序:微信小程序常见的配置传旨
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (三十五)大数据实战——Superset可视化平台搭建
  • (转)Mysql的优化设置
  • (转)Windows2003安全设置/维护
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • **CI中自动类加载的用法总结
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .net 8 发布了,试下微软最近强推的MAUI
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .net(C#)中String.Format如何使用
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .net访问oracle数据库性能问题
  • .NET使用HttpClient以multipart/form-data形式post上传文件及其相关参数
  • .net下简单快捷的数值高低位切换
  • @Autowired标签与 @Resource标签 的区别
  • [Android] 240204批量生成联系人,短信,通话记录的APK
  • [AR Foundation] 人脸检测的流程
  • [C++]——带你学习类和对象
  • [CCIE历程]CCIE # 20604