我有一个将工作分配给多个线程的应用程序。有时一个线程占用太多CPU负载,而所有其他线程都受此影响。我可以做些什么来管理线程,如果一个线程正在使用CPU,那么只需暂停它,或者将其切片以使所有线程加载到或多或少均匀。
已更新我的任务是独立的。不确定是否可以为每个线程添加性能计数器并测量负载。如果线程超出限制而不是暂停,直到以后的时间。
更新使用TPL负载平衡的问题是我的线程是STA。一种解决方案是按照众所周知的算法(如“循环负载平衡”)创建自制的负载平衡。
答案 0 :(得分:2)
你说你将工作分配给多个线程。因此,你可以正确地分解和分配工作。您需要充分了解代码的性能,以便查看工作负载并确定工作负载需要多少资源。然后,您可以拆分工作负载,使每个工作单元在资源方面大致相同。
我认为你不会找到一个完整的神奇解决方案。像.NET 4.0及更高版本的任务并行库这样的东西可以提供帮助,但它不是一个灵丹妙药。