资源简介
问题:
哲学家就餐问题可以这样表述,假设有六位哲学家围坐在一张圆形餐桌旁,做以下两件事情之一:吃饭,或者思考。吃东西的时候,他们就停止思考,思考的时候也停止吃东西。餐桌中间有一大碗意大利面,每两个哲学家之间有一只筷子。因为用一只筷子很难吃到意大利面,所以假设哲学家必须用两只筷子吃东西。他们只能使用自己左右手边的那两只筷子。
解决方式:
采用互斥量来解决该问题,每互斥量代表一只筷子。哲学家必须等待身边两只筷子同时可以使用的时候才可以进餐,当使用一会之后,需要自动释放该互斥量(筷子),其他哲学家就可以进行抢占使用。
代码片段和文件信息
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace PhEating
{
///
/// Copyright (C) 2008-2012 jiayp
///
/// CLR版本:2.0.50727.1433
/// 机器名称:JIAYP
/// 开发团队
/// 创建时间:10/20/2011 15:45:37
/// 创建年份: 2011
/// 作者:jiaypqq:104652091
/// 功能介绍:客户端设备树,用于展开所有节点
/// 检查时间:
/// 检查人:
/// 检查结果:
///
public partial class MainForm : Form
{
private Mutex[] m_chopsticksMux;
private Thread[] m_thread;
private Label[] m_phInfo;
private CheckBox[] m_chopInfo;
private SynchronizationContext m_context;
private bool m_isRunning = true;
public MainForm()
{
InitializeComponent();
m_context = SynchronizationContext.Current;
m_phInfo = new Label[6];
m_phInfo[0] = label1;
m_phInfo[1] = label2;
m_phInfo[2] = label3;
m_phInfo[3] = label4;
m_phInfo[4] = label5;
m_phInfo[5] = label6;
m_chopInfo = new CheckBox[6];
m_chopInfo[0] = checkBox1;
m_chopInfo[1] = checkBox2;
m_chopInfo[2] = checkBox3;
m_chopInfo[3] = checkBox4;
m_chopInfo[4] = checkBox5;
m_chopInfo[5] = checkBox6;
}
private void button1_Click(object sender EventArgs e)
{
m_chopsticksMux = new Mutex[6];
m_thread = new Thread[6];
for(int i=0;i<6;i++)
{
m_chopsticksMux[i]=new Mutex(true“chop sticks“+i.ToString());
}
ParameterizedThreadStart pts = new ParameterizedThreadStart(Eating);
m_thread[0] = new Thread(pts);
for (int i = 1; i < 6; i++)
{
pts = new ParameterizedThreadStart(Eating);
m_thread[i] = new Thread(pts);
}
Philospher ph = new Philospher();
ph.m_name = “Philospher0“;
ph.m_index = 0;
ChopStick csl = new ChopStick();
csl.m_number = 5;
csl.m_mutex = m_chopsticksMux[5];
ph.m_left = csl;
ChopStick csr = new ChopStick();
csr.m_number = 0;
csr.m_mutex = m_chopsticksMux[0];
ph.m_right = csr;
m_thread[0].Start(ph);
for (int i = 1; i < 6; i++)
{
ph = new Philospher();
ph.m_name = “Philospher“ + i.ToString();
ph.m_index = i;
csl = new ChopStick();
csl.m_number = i-1;
csl.m_mutex = m_chopsticksMux[i - 1];
ph.m_left = csl;
csr = new Cho
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2011-10-20 15:00 PhEating
目录 0 2011-10-20 14:46 PhEating\bin
目录 0 2011-10-20 14:46 PhEating\bin\Debug
文件 24576 2011-10-20 15:00 PhEating\bin\Debug\PhEating.exe
文件 28160 2011-10-20 15:00 PhEating\bin\Debug\PhEating.pdb
文件 5632 2005-11-11 22:25 PhEating\bin\Debug\PhEating.vshost.exe
文件 5866 2011-10-20 15:00 PhEating\MainForm.cs
文件 8997 2011-10-20 14:41 PhEating\MainForm.Designer.cs
文件 5814 2011-10-20 14:41 PhEating\MainForm.resx
目录 0 2011-10-20 14:39 PhEating\obj
目录 0 2011-10-20 15:00 PhEating\obj\Debug
文件 845 2011-10-20 14:41 PhEating\obj\Debug\PhEating.csproj.GenerateResource.Cache
文件 24576 2011-10-20 15:00 PhEating\obj\Debug\PhEating.exe
文件 180 2011-10-20 14:41 PhEating\obj\Debug\PhEating.MainForm.resources
文件 28160 2011-10-20 15:00 PhEating\obj\Debug\PhEating.pdb
文件 180 2011-10-20 14:46 PhEating\obj\Debug\PhEating.Properties.Resources.resources
目录 0 2011-10-20 14:38 PhEating\obj\Debug\Refactor
目录 0 2011-10-20 14:46 PhEating\obj\Debug\TempPE
文件 4608 2011-10-20 14:46 PhEating\obj\Debug\TempPE\Properties.Resources.Designer.cs.dll
文件 903 2011-10-20 14:38 PhEating\obj\Debug\WindowsApplication2.csproj.GenerateResource.Cache
文件 180 2011-10-20 14:04 PhEating\obj\Debug\WindowsApplication2.Properties.Resources.resources
文件 1840 2011-10-20 15:06 PhEating\obj\PhEating.csproj.FileListAbsolute.txt
文件 739 2011-10-20 14:38 PhEating\obj\WindowsApplication2.csproj.FileListAbsolute.txt
文件 3275 2011-10-20 14:46 PhEating\PhEating.csproj
文件 904 2011-10-20 14:39 PhEating\Program.cs
目录 0 2011-10-20 13:03 PhEating\Properties
文件 1194 2011-10-20 13:03 PhEating\Properties\AssemblyInfo.cs
文件 2840 2011-10-20 14:46 PhEating\Properties\Resources.Designer.cs
文件 5612 2011-10-20 13:03 PhEating\Properties\Resources.resx
文件 1106 2011-10-20 14:46 PhEating\Properties\Settings.Designer.cs
............此处省略5个文件信息
相关资源
- C# 软件版本更新
- C#屏幕软键盘源码,可以自己定制界面
- 020ASP.NET车辆综合管理系统.zip
- 智慧城市 智能家居 C# 源代码
- c#获取mobile手机的IMEI和IMSI
- C#实现简单QQ聊天程序
- 操作系统 模拟的 欢迎下载 C#版
- C#写的计算机性能监控程序
- 用C#实现邮件发送,有点类似于outlo
- MVC model层代码生成器 C#
- c#小型图书销售系统
- C# Socket Server Client 通讯应用 完整的服
- c# winform 自动登录 百度账户 源代码
- C#编写的16进制计算器
- C#TCP通信协议
- C# 数据表(Dataset)操作 合并 查询一
- C#语音识别系统speechsdk51,SpeechSDK51L
- 数据库备份还原工具1.0 C# 源码
-
[免费]xm
lDocument 节点遍历C# - EQ2008LEDc#开发实例
- DirectX.Capturec# winform 操作摄像头录像附
- c# 实现的最大最小距离方法对鸢尾花
- C#版保龄球记分代码
- C#自定义控件
- 基于c#的实验室设备管理系统621530
- C# 使用ListView控件实现图片浏览器(源
- C#简单窗体聊天程序
- C#指纹识别系统程序 报告
- c# 高校档案信息管理系统
- c#向word文件插入图片
评论
共有 条评论