多线程条件下,如何让最后一个完成的线程通知主线程完成了

bestdowt1314 2010-01-03 11:48:53
多线程条件下,如何让最后一个完成的线程通知主线程完成了.

就是我要建20个线程并行计算,计算完后,我在用主线程来合并数据。如何让最后一个完成的线程通知主线程完成了.我才开始合并数据,不然要报错
...全文
74 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
bestdowt1314 2010-01-06
  • 打赏
  • 举报
回复
主线程
//循环添加索引数据
for (int i = 0; i < threadCount; i++)
{
doneEvents[i] = new ManualResetEvent(false);
dirs[i] = FSDirectory.GetDirectory(IndexDir() + i.ToString(), true);
IndexData indexData = new IndexData(dao, i, doneEvents[i]);
ThreadPool.QueueUserWorkItem(waitCallback, indexData);
}

WaitHandle.WaitAll(doneEvents);


子线程执行完
indexData.DoneEvent.Set();

ChrisAK 2010-01-04
  • 打赏
  • 举报
回复
如果子线程执行完就结束了,那么主线
程对每个子线程调用一次Join就ok了.
wangminqi 2010-01-04
  • 打赏
  • 举报
回复
主线程中加个变量做计数器,每增加一个线程就++,每结束一个就--


http://www.mybuffet.cn
宝_爸 2010-01-04
  • 打赏
  • 举报
回复
最简单的就是Join了
参考:
http://msdn.microsoft.com/en-us/library/95hbf2ta.aspx
bestdowt1314 2010-01-04
  • 打赏
  • 举报
回复
如何让主线程知道子线程完了,然后调用join呢

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧