WIN32多线程二 用WaitXXX函数等待线程结束
来源:互联网 发布:安卓的重置网络设置 编辑:程序博客网 时间:2024/05/20 07:19
等待线程结束的更好方法是调用API WaitForSigleObject和WaitForMultipleObjects。前者用于等待一个线程由未激发状态变为激发状态,后者用于等待多个线程中全部或多个中的一个由未激发状态变为激发状态。对线程内核对象而言,如果线程在运行,则是未激发状态;如果线程已经退出,则是激发状态。不同内核对象的激发、未激发状态含义有所不同。DWORD WINAPI WaitForSingleObject(
__in HANDLE hHandle, //等待的内核对象句柄
__in DWORD dwMilliseconds //等待的超时时间
);
函数失败,返回WAIT_FAILED;
等待对象变为激发状态,返回WAIT_OBJECT_O;
等待超时,返回WAIT_TIMEOUT;
一个拥有mutex的线程结束前,没有释放掉mutex,则返回WAIT_ABANDONED.
DWORD WINAPI WaitForMultipleObjects(
__in DWORD nCount, //等待内核对象个数
__in const HANDLE* lpHandles,//内核对象数组
__in BOOL bWaitAll, //是否等待所有内核对象,还是等待其中一个变为激发状态就返回
__in DWORD dwMilliseconds //等待的超时时间
);
函数失败,返回WAIT_FAILED;
等待超时,返回WAIT_TIMEOUT;
bWaitAll为TRUE,所有对象变为激发状态,返回WAIT_OBJECT_O;
bWaitAll为FALSE,返回值减去WAIT_OBJECT_O的值就是变为激发状态内核对象在数组中的索引;
如果内核对象中有mutex,返回值可能在WAIT_ABANDONED到WAIT_ABANDONED+nCount-1。
下面是个<<WIN32多线程程序设计>>中用WaitForMultipleObjects实现的简单的线程池的例子,3个线程来完成6个任务。
0 0
- WIN32多线程二 用WaitXXX函数等待线程结束
- WIN32多线程二 用WaitXXX函数等待线程结束(转)
- Win32多线程之等待一个线程的结束(WaitForSingleObject)
- Win32多线程之线程等待
- win32多线程等待消息函数
- Win32线程——等待另一个线程结束
- 主线程等待子线程结束(多线程结束标识)
- WIN32多线程一 用WIN32 API创建和结束线程(转)
- Java:多线程等待所有线程结束(CountDownLatch/CyclicBarrier)
- Java:多线程等待所有线程结束(CountDownLatch/CyclicBarrier) .
- Java:多线程等待所有线程结束(CountDownLatch/CyclicBarrier) .
- Java:多线程等待所有线程结束(CountDownLatch/CyclicBarrier)
- Java:多线程等待所有线程结束(CountDownLatch/CyclicBarrier) .
- java 多线程 主线程等待子线程结束
- 多线程001 - 主线程等待子线程结束
- Java多线程等待所有线程结束(CountDownLatch/CyclicBarrier)
- 等待指定线程结束
- 等待线程结束
- 查询数据库中每个表占用空间方法
- Oracle 使用connect by进行级联查询
- C++学习小疑问:类的名称能否和命名空间的名称相同?
- Simple、KMP、BM、Sunday匹配算法-效率测试
- iOS仿微信相册界面翻转过渡动画
- WIN32多线程二 用WaitXXX函数等待线程结束
- hexo教程系列——hexo配置教程
- Android SO库
- Kubernetes/Docker相关问题
- thread的status详解
- 巧用WM_PAINT解决ListView控件嵌入Edit显示不正常的问题
- HDU 4734 F(x) (数位DP)
- iOS 9不能访问HTTP的解决方法
- [NOIP模拟题][DFS][DP][乱搞]