Ign*_*cia 4 .net multithreading synchronization locking .net-3.5
我有一个主线程和N个工作线程的应用程序.在某些时候,我需要主线程等待,直到所有N个线程完成了他们工作的一部分.
我通常会使用Monitor.Wait()和Monitor.Pulse()但这会阻止N个线程同时工作.
有关如何做到这一点的任何想法?
提前致谢.
.NET 4.0将包含System.Threading.Barrier将使多个线程之间的同步更容易的类.可以在此处找到包含一些优秀示例代码的博客文章.
使用.NET 3.0+中的多个WaitHandle 可以实现类似的功能,如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... */
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1512 次 |
| 最近记录: |