C#   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c# – 在多线程工作队列处理器中管理ThreadPool饥饿?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在研究工作队列处理器的设计,其中QueueProcessor从队列中检索命令模式对象并在新线程中执行它.

我试图了解一个潜在的Queue锁定场景,其中嵌套的命令可能导致死锁.

例如.

将FooCommand对象放置在QueueProcessor然后在其自己的线程中执行的队列中.

执行FooCommand将BarCommand放入队列.

假设允许的最大线程数仅为1个线程,则QueueProcessor将处于死锁状态,因为FooCommand无限期等待BarCommand完成.

如何管理这种情况?队列对象是作业的正确对象吗?是否有任何制衡措施可以解决这个问题?

非常感谢. (应用程序使用C#.NET 3.0)

解决方法

对于像这样的简单情况,可以根据需要分离更多线程的附加监视线程是有帮助的.

基本上每N秒检查一次作业是否已完成,如果没有,则添加一个线程.

这不一定能处理更复杂的死锁问题,但它会解决这个问题.

我对更重的问题的建议是限制等待新生成的进程,换句话说,你只能等待你开始的事情,这样你永远不会遇到死锁,因为在那种情况下循环是不可能的.

大佬总结

以上是大佬教程为你收集整理的c# – 在多线程工作队列处理器中管理ThreadPool饥饿?全部内容,希望文章能够帮你解决c# – 在多线程工作队列处理器中管理ThreadPool饥饿?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。