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问题 今天遇到一个问题,在主站点现在配置的应用和主站点登录会话状态不能共享,进入子站点应用 ...
随机推荐
- could not build module 'XXXXXXXX'或者error: expected identifier or '(' 。一堆奇怪的错误————错误根源
一堆奇怪的错误:1⃣️could not build module 'XXXXXXXX' 2⃣️error: expected identifier or '(' 3⃣️EDIT Setting Pr ...
- iOS架构师之路:控制器(View Controller)瘦身设计
前言 古老的MVC架构是容易被iOS开发者理解和接受的设计模式,但是由于iOS开发的项目功能越来越负责庞大,项目代码也随之不断壮大,MVC的模糊定义导致我们的业务开发工程师很容易把大量的代码写到视图控 ...
- 《Java应用程序(Application)》
在编写Java应用程序(Application)时可以这样: 1,定义包名. 2, 导入相关的包. 3, 定义一个类. 4,定义相关变量. 5,定义构造函数.(在构造函数内调用init()方法和add ...
- 2016年Q2《网络安全创新500强》榜单解读
近日,美国投资咨询机构Cybersecurity Ventures发布了2016 Q2<网络安全创新500强>企业榜单,新兴安全公司root9B异军突起,国内4家企业上榜. 关于Cyber ...
- Log4j快速使用精简版
Log4j快速使用精简版 1.导入log4j-1.2.17.jar包 2.在src根目录下创建log4j.properties文件 log4j.rootLogger=INFO, CONSOLE, FI ...
- 【Windows】为节省系统资源,停掉不必要的服务
1.windows服务名称(注册表名称)和显示名称对照表如下: < 显示名称 状态 服务名称 Application Management demand AppMgmt ASP.NET Stat ...
- Android动画之Tween动画实战
Android动画分为Tween动画和Frame动画,上一节通过一个实例介绍了Frame动画,本节将介绍Tween动画.Tween可以把对象进行缩小.放大.旋转和渐变等操作. Tween动画有 ...
- shell 中变量前"?"的作用
example: if ($?USER == 0 || $?prompt == 0) then .... if ( $?DS_HOME != 0 ) then if ( ${? ...
- 实时控制软件设计 第一次作业 Draw
#include <iostream> #include <cstring> #include <math.h> #include <Eigen/Dense& ...
- Android Studio 个人常用设置
1.主题 Darcula主题真的看起来舒服很多呢: 2.常用快捷键 "Toggle Case" "Quick Documentation" "Refo ...