如何在 .NET 中使用 ThreadPool 同时设置最大线程数 运行
How to set max number of threads running concurrently using ThreadPool in .NET
我需要并行执行固定数量的线程,比如 5 个,并将所有剩余的线程入队。这是我试过的一段代码。
ThreadPool.SetMaxThreads(5, 0);
ThreadPool.QueueUserWorkItem(new WaitCallback(ThreadProc), task1);
Thread.Sleep(1000);//'ThreadProc' is the callback function
现在,当我尝试 运行 时,假设 7 个线程并行,那么它是 运行 同时连接所有线程而不是 运行 连接 5 个线程然后排队2 个线程。我该如何实现?
如果您可以将 Parallel 与 For/ForEach 一起使用,那么您就有了 ParallelOptions.MaxDegreeOfParallelism
,这将限制并发操作的数量。
我需要并行执行固定数量的线程,比如 5 个,并将所有剩余的线程入队。这是我试过的一段代码。
ThreadPool.SetMaxThreads(5, 0);
ThreadPool.QueueUserWorkItem(new WaitCallback(ThreadProc), task1);
Thread.Sleep(1000);//'ThreadProc' is the callback function
现在,当我尝试 运行 时,假设 7 个线程并行,那么它是 运行 同时连接所有线程而不是 运行 连接 5 个线程然后排队2 个线程。我该如何实现?
如果您可以将 Parallel 与 For/ForEach 一起使用,那么您就有了 ParallelOptions.MaxDegreeOfParallelism
,这将限制并发操作的数量。