gpt4 book ai didi

c# - 在多线程工作队列处理器中管理 ThreadPool 饥饿?

转载 作者:行者123 更新时间:2023-11-30 14:21:10 26 4
gpt4 key购买 nike

我正在研究工作队列处理器的设计,其中 QueueProcessor 从队列中检索命令模式对象并在新线程中执行它。

我正在尝试解决嵌套命令可能导致死锁的潜在队列锁定场景。

例如

一个 FooCommand 对象被放置到队列中,然后 QueueProcessor 在它自己的线程中执行。

正在执行的 FooCommand 将一个 BarCommand 放入队列。

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

如何管理这种情况?队列对象是否适合该作业?是否可以采取任何制衡措施来解决此问题?

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

最佳答案

您可以重新设计一些东西,使 FooCommand 不使用队列来运行 BarCommand,而是直接运行它,或者您可以将 FooCommand 分成两部分,让前半部分在排队 BarCommand 后立即停止,让 BarCommand 排队,第二部分有FooCommand 完成其工作后。

关于c# - 在多线程工作队列处理器中管理 ThreadPool 饥饿?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/125812/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com