gpt4 book ai didi

c# - ThreadPool.QueueUserWorkItem 具有任意数量的线程

转载 作者:太空宇宙 更新时间:2023-11-03 20:29:28 25 4
gpt4 key购买 nike

我有一个 ConcurrentQueue,其中填充了任意数量的对象,我想在单独的线程中处理这些对象。

如何等待所有排队的工作项目完成?我看到的示例使用固定的 ManualResetEvents 数组,然后使用 WaitHandle.WaitAll 让它们全部完成。

我需要管理线程数吗?我怎样才能让它们一直排队,让 ThreadPool 处理有多少正在运行?队列中将有数以万计的对象。

foreach (object A in myCollection)
{
ThreadPool.QueueUserWorkItem(A.process());
}
// now wait for all threads to finish

或者我是否必须跟踪列表中的所有 ManualResetEvents 或类似的东西,然后 WaitAll 让它们全部报告完成?

最佳答案

您不应该简单地对工作项进行排队,而应该使用任务库 (System.Threading.Tasks),它为您提供更多功能,包括可替换的调度程序。

关于c# - ThreadPool.QueueUserWorkItem 具有任意数量的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8311842/

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