zoukankan      html  css  js  c++  java
  • 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 ");
    }

    DWORD WINAPI th_cr1(LPVOID lpThreadParameter)
    {
    printf("TH_1 ");
    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;
    }

  • 相关阅读:
    python验证卡普耶卡(D.R.Kaprekar)6174猜想
    关于java环境变量配置出现javac命令无法运行的解决办法
    关于QQ农场牧场等曾经流行的游戏的一些见解
    个人博客九
    个人博客八
    个人博客七
    个人博客六
    第十一周学习进度
    个人博客五
    个人博客四
  • 原文地址:https://www.cnblogs.com/lvpblog/p/6023900.html
Copyright © 2011-2022 走看看