关于哲学家就餐问题
来源:互联网 发布:软件代理出口 编辑:程序博客网 时间:2024/04/29 17:40
自己写的哲学家算法,大家看看这段代码是不是哲学家吃饭问题啊~自己感觉有点不对
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace EatingProblem
{
class Program
{
public static Mutex[] chop = new Mutex[5];//五个筷子,五个互斥对象
class ph
{
public void run()
{
// Monitor.Enter(this);
chop[int.Parse(Thread.CurrentThread.Name)].WaitOne();
chop[(int.Parse(Thread.CurrentThread.Name) + 1) % 5].WaitOne();
Console.WriteLine("哲学家{0} 正在吃东西", Thread.CurrentThread.Name);
Thread.Sleep(2000);
chop[int.Parse(Thread.CurrentThread.Name)].ReleaseMutex();
chop[(int.Parse(Thread.CurrentThread.Name) + 1) % 5].ReleaseMutex();
Console.WriteLine("哲学家{0} 正在思考问题", Thread.CurrentThread.Name);
Thread.Sleep(2000);
// Monitor.Exit(this);
}
}
static void Main(string[] args)
{
//for (int i = 0; i < 5; i++)
//{
// chop[i] = new Mutex(false);//开始时候,叉子都是空闲的
//}
for (int j = 0; j < 5; j++)
{
chop[j] = new Mutex();//设置的五个互斥对象,表示筷子。
}
ph p = new ph();
for (int i = 0; i < 100; i++)
{
Thread[] th = new Thread[5];
th[i%5] = new Thread(p.run);
th[i%5].Name = (i%5).ToString();
th[i%5].Start();
}
Console.ReadKey();
}
}
}
- 关于哲学家就餐问题
- 关于哲学家就餐问题 源代码(linux)
- 哲学家就餐问题
- 哲学家就餐问题
- 哲学家就餐问题
- 哲学家就餐问题 锁
- 哲学家就餐问题
- 哲学家就餐问题
- 哲学家就餐问题
- 哲学家就餐问题
- 哲学家就餐问题
- 哲学家就餐问题
- 哲学家就餐问题
- 哲学家就餐问题
- 哲学家就餐问题
- 哲学家就餐问题
- 哲学家就餐问题
- 哲学家就餐问题
- ArrayList按照元素的特性进行排序
- 字库分类(GBK PS CID True Type)字 库
- PHP常用正则表达式汇总
- AIX 中的内存分配机制
- 隐藏参数this
- 关于哲学家就餐问题
- Ubuntu文件系统和目录结构
- 面向对象思维
- hash表的应用
- 程序中启动另外的程序
- hadoop HA----Quorum Journal 设计
- 关于直线光栅化
- Java中String与byte[]
- MAKEFILE文件的语法规则和配置