WaitForMultipleObjects返回失败原因之一
上网搜了下 关于 WaitForMultipleObjects等待多个线程退出的状态失败的情况,也有人遇到类似的情况。
一次项目中我也遇到这么个情况。项目中创建线程都是用的 _beginthread。WaitForSingleObject去等待 到没事,
但是,用 WaitForMultipleObjects去等待 _beginthread所创建的线程时,就遇到了问题,返回不成功。
后来把 创建线程的函数改为CreateThread,再调用WaitForMultipleObjects去等待 就能成功了。
原因未知,如果知道的大神们,望留言,学习学习。
测试代码如下:
// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<stdio.h>
#include <windows.h>
#include <process.h>
void th_1(void* pararm)
{
printf("TH_1\n");
}
DWORD WINAPI th_cr1(LPVOID lpThreadParameter)
{
printf("TH_1\n");
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
HANDLE hArr[10] = { 0 };
int nCount = sizeof(hArr) / sizeof(HANDLE);
for (int i = 0; i < nCount; i++)
{
hArr[i] = (HANDLE)_beginthread(th_1, 0, NULL);
}
Sleep(1000);
DWORD dw = WaitForMultipleObjects(nCount, hArr, TRUE, INFINITE);
//HANDLE hArr[10] = { 0 };
//int nCount = sizeof(hArr) / sizeof(HANDLE);
//for (int i = 0; i < nCount; i++)
//{
// hArr[i] = CreateThread(NULL, 0, th_cr1,NULL,1,NULL);
//}
//DWORD dw = WaitForMultipleObjects(nCount, hArr, TRUE, INFINITE);
//HANDLE* hArr = new HANDLE[10];
//hArr[0] = (HANDLE)9;
//for (int i = 1; i < 10; i++)
//{
// hArr[i] = CreateThread(NULL, 0, th_cr1, NULL, 1, NULL);
//}
//HANDLE* ph = hArr;
//DWORD dw = WaitForMultipleObjects((int)hArr[0], ph+1, TRUE, INFINITE);
//HANDLE hArr[11] = { 0 };
//int nCount = sizeof(hArr) / sizeof(HANDLE);
//hArr[0] = (HANDLE)10;
//for (int i = 1; i < nCount; i++)
//{
// hArr[i] = (HANDLE)_beginthread(th_1, 0, NULL);
//}
//HANDLE* ptemp = hArr + 1;
//DWORD dw = WaitForMultipleObjects(10, ptemp, TRUE, INFINITE);
//Sleep(1000);
return 0;
}
WaitForMultipleObjects返回失败原因之一的更多相关文章
- WaitForMultipleObjects返回0xffffffff
DWORD ret; ; HANDLE handle[THREAD_NUM]; ; i < THREAD_NUM; i++) handle[i] = (HANDLE)_beginthreadex ...
- 玩转Windows服务系列——无COM接口Windows服务启动失败原因及解决方案
将VS创建的Windows服务项目编译生成的程序,通过命令行 “服务.exe -Service”注册为Windows服务后,就可以通过服务管理器进行管理了. 问题 通过服务管理器进行启动的时候,发现服 ...
- php json_decode返回失败的排查
参考网址: https://segmentfault.com/a/1190000006154011 返回失败时,通过 json_last_error可以获取其json解析失败的原因.
- MFC 对话框不显示,返回-1 原因
DoModal失败原因 1.MFC 通常对话框不显示的原因有 1 父窗口HWND无效 2 在ONINITDIALOG里用了ENDDIALOG 3 无效的对话框资源ID 4 使用没有注册的的自定义控件 ...
- ffmpeg avformat_open_input返回失败的解决办法
用ffmpeg做的第一个程序,参考网上的代码,就出现了一些问题,其中avformat_open_input返回失败. 下面是我在网上收集到的失败信息的相关解决: /////////////////// ...
- java File delete()执行失败原因(转)
java.io.File里的delete操作很实用也很常用,可以用来删除单独的文件和某一目录.但有时候会出现delete失败的情况,出现这种情况的原因一般有以下几种:1.删除时还有其他程序在使用该文件 ...
- TFS Release 步骤调用命令行返回失败信息的处理方法
TFS Release中自定义步骤时,可以选择“命令行”,官方的文档中,并没有描述调用相关的程序后,如何返回失败信息.通过下面步骤,可以实现本标题描述的功能. 步骤一:编写Console Applic ...
- pip install 提示代理连接失败原因及解决办法
# pip install 提示代理连接失败原因及解决办法 1. 错误提示 在公司电脑上安装Python的虚拟环境时输入命令: pip install virtualenv 系统提示以下异常信息: R ...
- 单点登录跳转失败(原因是 主票据申请子票据失败) asp.net 同站点下不同应用间不同版本Framework问题
单点登录跳转失败(原因是 主票据申请子票据失败) asp.net 同站点下不同应用间不同版本Framework问题 今天遇到一个问题,在主站点现在配置的应用和主站点登录会话状态不能共享,进入子站点应用 ...
随机推荐
- Oracle函数over(),rank()over()作用及用法--分区(分组)求和& 不连续/连续排名
(1) 函数: over()的作用及用法: -- 分区(分组)求和. RANK ( ) OVER ( [query_partition_clause] order_by_clause )D ...
- 005-Scala数组操作实战详解
005-Scala数组操作实战详解 Worksheet的使用 交互式命令执行平台 记得每次要保存才会出相应的结果 数组的基本操作 数组的下标是从0开始和Tuple不同 缓冲数组ArrayBuffer( ...
- jQuery--选择器总结
传统选择器:$('#test') id选择器 $('.test') class选择器$('p') 标签选择器$('*') 通配符选择器$('div,span,.myclass') 多个元素选择器层次选 ...
- Http的Get/Post请求区别
1.HTTP请求格式: <request line> <headers> <blank line> [<request-body>] 在HTTP请求中, ...
- Maven 导出依赖Jar,生成source.jar,javadoc.jar
下载最新版的Maven http://maven.apache.org/download.cgi 解压到本地文件夹 新建环境变量 MAVEN_HOME maven解压目录 在path加 ...
- android小技巧(一)
1,调web浏览器 Uri myBlogUri = Uri.parse("http://xxxxx.com"); returnIt = new Intent(Intent.AC ...
- JQuery基础总结上
最近在慕课网学习JQuery基础课程,发现只是跟随网站的课程学习而不去自己总结扩展的话,很难达到真正学会理解的地步. 于是先在网站上草草过了一遍课程,然后借着今天的这个时间边记录边重新整理学习一下. ...
- svn co
svn co 的用法经常有两种: 第一种: 直接 svn co http://svnserver/mypro/trunk 此时, 会在你的当前目录 ...
- jQuery动画高级用法——详解animation中的.queue()函数
http://www.cnblogs.com/zhwl/p/4328279.html $('#object').hide('slow').queue(function(next){ $(thi ...
- HTML之iframe
iframe:是框架的一种形式. 属性: frameborder=0/1 表示是否显示周围边框 0--否 1--是 width,height:设置的边框宽高,具体数值不需要加单位,也可用百分比 mar ...