我正在研究QueueProcessor从队列中检索Command Pattern对象并在新线程中执行它的工作队列处理器的设计。管理多线程工作队列处理器内的ThreadPool饥饿吗?
我想让我的头周围的嵌套命令可能导致死锁的潜在队列锁定方案。
E.G.
FooCommand对象被放置到QueueProcessor然后在其自己的线程中执行的队列中。
正在执行的FooCommand将BarCommand放置到队列中。
假设允许的最大线程数仅为1个线程,由于FooCommand无限等待BarCommand完成,QueueProcessor将处于死锁状态。
如何管理这种情况?队列对象是作业的正确对象吗?是否有任何制衡措施可以解决这个问题?
非常感谢。 (应用程序使用C#.NET 3.0)
为什么要执行将BarCommand放入队列的FooCommand将其锁定?你的意思是当一个命令在另一个线程中执行时整个队列将被锁定? – cruizer 2008-09-24 07:25:36