WaitForMultipleObjects、WaitForSingleObject、GetExitCodeThread

// Thread.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <windows.h>

HANDLE hth[2];
DWORD WINAPI func1(LPVOID p1)
{
    printf("fun1 end\n");
    DWORD exitC;
    GetExitCodeThread(hth[1],&exitC);
    if (exitC==STILL_ACTIVE)//还在运行中
    {
        printf("func2 STILL_ACTIVE\n");
    }
    return 4;
}

DWORD WINAPI func2(LPVOID p2)
{
    Sleep(1000);
    DWORD exitC;
    GetExitCodeThread(hth[0],&exitC);
    printf("func1 exit code= %d\nfun2 end\n",exitC);
    return 0;
}

int main(int argc, char* argv[])
{
    
    DWORD thID1,thID2;
    printf("Hello World!\n");
    hth[0]= CreateThread(NULL,0,func1,0,0,&thID1);
    hth[1]= CreateThread(NULL,0,func2,0,0,&thID2);

    WaitForMultipleObjects(2,hth,true,INFINITE); //true等待所有线程结束 false 只要有一条线程结束就退出 INFINITE一直等待
    //WaitForMultipleObjects(2,hth,false,10000);//INFINITE
    //WaitForSingleObject(hth[1],INFINITE);

    return 0;
}

转载于:https://www.cnblogs.com/ahuo/archive/2007/09/13/891459.html

WaitForMultipleObjects、WaitForSingleObject、GetExitCodeThread相关推荐

  1. Windows线程CreateThread、线程处理函数、SuspendThread、ResumeThread、WaitForSingleObject、WaitForMultipleObjects

    Windows线程是可以执行的代码的实例.系统是以线程为单位调度程序.一个程序当中可以有多个线程,实现多任务的处理. windows线程的特点: 1.线程都具有一个ID 2.每个线程都具有自己的内存栈 ...

  2. CreateMutex、WaitForSingleObject、ReleaseMutex——创建互斥对象

    CreateMutex CreateMutex作用是找出当前系统是否已经存在指定进程的实例.如果没有则创建一个互斥体. 互斥对象是系统内核维护的一种数据结构,它保证了对象对单个线程的访问权 互斥对象的 ...

  3. CreateMutex、WaitForSingleObject、ReleaseMutex

    我们对线程做一些简单的同步处理,这里我们用互斥量(Mutex). 互斥量(Mutex)和二元信号量类似,资源仅允许一个线程访问.与二元信号量不同的是,信号量在整个系统中可以被任意线程获取和释放,也就是 ...

  4. linux 线程 waitforsingleobject,WaitForSingleObject、WaitForMulitpleObjects和SignalObjectAndWait线程同步...

    WaitForSingleObject.WaitForMulitpleObjects和SignalObjectAndWait线程同步 2010-12-10 15:47 类型:生活点滴 用户模式的线程同 ...

  5. 线程中CreateEvent、SetEvent、WaitForSingleObject的用法

    原文地址:https://www.cnblogs.com/MrYuan/p/5238749.html 首先介绍CreateEvent是创建windows事件的意思,作用主要用在判断线程退出,线程锁定方 ...

  6. CMutex、CCriticalSection、CSemaphore、CEvent、WaitForSingleObject 的小例子

    一.CMutex CMutex mutex; mutex.Lock(); // 互斥的动作 // mutex.Unlock(); 二.CCriticalSection CCriticalSection ...

  7. Delphi中线程类TThread实现多线程编程2---事件、临界区、Synchronize、WaitFor……

    接着上文介绍TThread. 现在开始说明 Synchronize和WaitFor 但是在介绍这两个函数之前,需要先介绍另外两个线程同步技术:事件和临界区 事件(Event) 事件(Event)与De ...

  8. win32下进程间通信方式之管道、邮件槽、剪切板、共享内存、消息、套接字、RPC、DDE等

    #include "stdafx.h"/*32位Windows采用虚拟内存技术使每个进程虚拟4G内存,在逻辑上实现了对进程之间数据代码的分离与保护.那么相应的进程之间的通信也就有必 ...

  9. MFC之AfxbeginThread 线程 创建、挂起、释放、结束、退出

    MFC之AfxbeginThread 线程 创建.挂起.释放.结束.退出 本文简单阐述了如何使用一个afxbeginthread创建一个线程(两种方法,使用默认设置,使用自主设置参数),以及一些如同, ...

  10. Google面试题—有四个线程1、2、3、4。线程1的功能就是输出1,线程2的功能就是输出2,以此类推.........现在有四个文件ABCD...

    分类: windows编程 C++ 2012-10-27 19:56 3410人阅读 评论(1) 收藏 举报 有四个线程1.2.3.4.线程1的功能就是输出1,线程2的功能就是输出2,以此类推.... ...

最新文章

  1. 记录win10快捷键
  2. 一文教你快速上手PyFlink
  3. 显卡欺骗器状态检测及安装注意事项
  4. jquery不同版本冲突导致低版本功能不能用
  5. 17-Flutter移动电商实战-首页_楼层区域的编写
  6. OSGI(面向Java的动态模型系统)
  7. ik分词和jieba分词哪个好_Lucene.net(4.8.0) 学习问题记录五: JIEba分词和Lucene的结合,以及对分词器的思考...
  8. session原理总结
  9. Ubuntu 12.04下Pomelo开发环境搭建(转)
  10. python做数据排序,python 实现对数据的排序和绘图
  11. 机器视觉基础知识详解
  12. linux 默认ssh端口号,CentOS/Linux 修改默认SSH端口号
  13. 360浏览器显示没有网络连接到服务器地址,Win10 360浏览器提示网络连接错误错误代码102如何解决...
  14. 设计模式(Design Pattern,DP)
  15. 逻辑运算是计算机实现计算器基础,第1章__计算机的发展与运算基础.ppt
  16. 请解析IP地址和对应的掩码,进行分类识别。要求按照A/B/C/D/E类地址归类,不合法的地址和掩码单独归类。
  17. ActiveX控件:设置控件属性和方法的一种简易办法(VS2013)
  18. CentOS 7代理设置(Yum/cURL/Wget/Docker)
  19. selenium中ByChained方法
  20. 3.Containerd容器运行时的配置浅析与知识扩充实践

热门文章

  1. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-5.开源工具的优缺点选择和抽象方法的建议...
  2. 阶段3 1.Mybatis_05.使用Mybatis完成CRUD_1 回顾Mybatis的环境搭建-实现查询所有功能
  3. 阶段1 语言基础+高级_1-3-Java语言高级_09-基础加强_第3节 注解_12_注解_概念
  4. 八.nginx网站服务实践应用
  5. 多用类型常量,少用#define预处理指令
  6. Nginx 反向代理解决浏览器跨域问题
  7. 数据结构-单链表的正向排序
  8. MySQL基本数据操作
  9. QT打包后音频不响应的问题
  10. Y COMBINATOR的六大强悍女人-转自应用电台