gpt4 book ai didi

.net - 如何停止一个线程直到 n 个线程完成它们的工作

转载 作者:行者123 更新时间:2023-12-03 12:44:24 25 4
gpt4 key购买 nike

我有一个包含一个主线程和 N 个工作线程的应用程序。在某些时候,我需要主线程等待,直到所有 N 个线程都完成了他们工作的一部分。

我通常会使用 Monitor.Wait() 和 Monitor.Pulse() 但这会阻止 N 个线程同时工作。

关于如何做到这一点的任何想法?

提前致谢。

最佳答案

.NET 4.0 将包括 System.Threading.Barrier 使多个线程之间的同步更容易的类。可以在 here 上找到包含一些很好的示例代码的博客文章.

Similar functionality can be achieved在 .NET 3.0+ 中使用多个 WaitHandles,如 this example 中所示在 MSDN 上。

MSDN示例的简要总结:

const int numberOfWorkers = 5;

static void Main()
{
var handles = new ManualResetEvent[numberOfWorkers];

for (int i = 0; i < numberOfWorkers; i++)
{
handles[i] = new ManualResetEvent(false);
ThreadPool.QueueUserWorkItem(o => worker.Work(), null);
}

// Wait for all workers to finish before continuing
WaitHandle.WaitAll(handles);
/* continue execution... */
}

关于.net - 如何停止一个线程直到 n 个线程完成它们的工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1980984/

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