多线程编程时用WaitForMultipleObjects函数可以很方便的等待多个线程的退出。但是在一个并行计算pi的程序中出现了一些小问题:为了对比测试不同线程数量的效率,不断加大 线程数,而当线程数大于64时却出现了下图的结果
而且第一行的输出基本上是一运行就输出,而下面的“任意键继续”却等了一会儿才跳出来,显然程序并没有按照设计等到所有线程计算完毕后才继续执行输出pi值。
百度了一下,看到http://www.cnblogs.com/ayanmw/archive/2012/11/13/2767628.html的作者也遇到了和我一样的问题,不过他也没有给出解决方案。
只好乖乖的去msdn找这个函数的用法(http://msdn.microsoft.com/zh-cn/library/windows/desktop/ms687025(v=vs.85).aspx),看到了这样一段话:
To wait on more than MAXIMUM_WAIT_OBJECTS handles, use one of the following methods:
- Create a thread to wait on MAXIMUM_WAIT_OBJEC