0

我有一个将工作分配给多个线程的应用程序。有时一个线程会占用过多的 CPU 负载,而所有其他线程都会受此影响。我该怎么做才能以这样的方式管理线程,如果一个线程正在使用 CPU,那么只需暂停它,或者将其切片以使所有线程的负载或多或少均匀。

更新我的任务是独立的。不确定是否可以为每个线程添加性能计数器并测量负载。如果线程超出限制,则暂停它直到稍后时间。

使用 TPL 负载平衡的更新问题是我的线程是 STA。一种解决方案是按照众所周知的算法(如“循环负载平衡”)创建自制的负载平衡。

4

1 回答 1

2

您说将工作分配给多个线程。所以,由来分解和正确分配工作。您需要充分了解代码的性能,以便查看工作负载并确定工作负载需要多少资源。然后,您可以拆分工作负载,以便每个工作单元在资源方面或多或少相同。

我不认为你会找到一个完整的神奇解决方案。Task Parallel Library i .NET 4.0 及更高版本之类的东西可以提供帮助,但它不是灵丹妙药。

于 2012-11-28T03:29:59.887 回答