Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个将工作分配给多个线程的应用程序。有时一个线程会占用过多的 CPU 负载,而所有其他线程都会受此影响。我该怎么做才能以这样的方式管理线程,如果一个线程正在使用 CPU,那么只需暂停它,或者将其切片以使所有线程的负载或多或少均匀。
更新我的任务是独立的。不确定是否可以为每个线程添加性能计数器并测量负载。如果线程超出限制,则暂停它直到稍后时间。
使用 TPL 负载平衡的更新问题是我的线程是 STA。一种解决方案是按照众所周知的算法(如“循环负载平衡”)创建自制的负载平衡。
您说您将工作分配给多个线程。所以,由你来分解和正确分配工作。您需要充分了解代码的性能,以便查看工作负载并确定工作负载需要多少资源。然后,您可以拆分工作负载,以便每个工作单元在资源方面或多或少相同。
我不认为你会找到一个完整的神奇解决方案。Task Parallel Library i .NET 4.0 及更高版本之类的东西可以提供帮助,但它不是灵丹妙药。