当前位置:  开发笔记 > 编程语言 > 正文

如何开始编写"餐饮哲学家"模拟?

如何解决《如何开始编写"餐饮哲学家"模拟?》经验,为你挑选了1个好方法。

我不是C#的初学者,但我真的需要增加我的理解,所以我选择了一个经典的死锁问题来编写代码来帮助自己教一些C#的更高级概念.在哲学家就餐问题似乎是一个很好的,但我需要一些帮助上手.我知道我需要接近"食客"作为对象,但为了模拟吃饭之间的随机延迟,我是否应该在每个用餐者的单独线程中进行线程化?我是否需要某种"主人"来监控所有行动?任何一般的设计概念建议都是受欢迎的,但我想将咕噜声编程作为练习.谢谢!



1> Fernando Bar..:

我认为,以模拟这将是一个最好的办法Fork与等的方法类use()持有叉(bool available = false)和release()释放它.

一个Philosopher带有getFork(Fork)releaseFork(Fork)操作保持/释放对象Fork的类(在我看来,计时器在方法中会很好,useFork()所以你可以真正感知到死锁.

对于DinningTable创建实例的Last (或任何其他名称)类,并执行日志.如果你打算使用线程,在这里你应该实现为每个线程Philosopher赞同的Fork.

作为一个建议,你可以实现一个Plate类,持有一定数量的意大利面条,该Philosopher.useFork()方法在时间范围内降低.通过这种方式,您可以先看到哪些Philosopher完成.

当然,我会为你实现这些实现,因为你的目标是学习C#...根据我的经验,你最好学习像这些类一样具体的东西;)此外,你可以在Google上找到很多实现,如果你想欺骗......

我邀请你在它之后分享代码.这是一个很棒的学习参考.

希望这对你有帮助.

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有