windows线程 事件CreateEvent、SetEvent、ResetEvent、CloseHandle
事件
相关问题
程序之前的通知的问题
事件的使用
1.创建事件
HANDLE CreateEvent(
LPSECURITY_ATTRIBUTES lpEventAttributes,//事件安全属性 (废弃的参数,设置NULL)
BOOL bManualReset,//事件的重置,或事件的复位方式,
BOOL bInitialState,//事件初始状态,TRUE有信号,FALSE无信号
LPCTSTR lpName //事件命名
);//创建成功返回事件句柄
bManualReset事件复位方式,参数有两个
TRUE-手动 程序员自己设置
FALSE-自动
bInitialState事件创建之初是否有信号
TRUE-创建时有信号
FALSE-创建时无信号
2.等候时间
WaitForSingleObject/WaitForMultipleObjects
3.触发事件(将事件设置成有信号状态)
BOOL SetEvent(
HANDLE hEvent//事件句柄
);
4.事件复位(将事件设置成没有信号状态)
BOOL ResetEvent(
HANDLE hEvent
)
5.关闭事件
CloseHandle
注意:小心事件的死锁
示例代码
//用ControlProc线程函数控制PrintProc函数打印
//每0.5秒打印一次
#include <Windows.h>
#include <stdio.h>HANDLE g_hEvent = 0;
DWORD g_nNumber = 0;DWORD CALLBACK PrintProc(LPVOID lpParam)
{while(1){WaitForSingleObject(g_hEvent,INFINITE);printf("print--------------%d\n",g_nNumber++);//ResetEvent(g_hEvent); //手动复位}return 0;
}DWORD CALLBACK ControlProc(LPVOID lpParam)
{while(1){Sleep(500);SetEvent(g_hEvent);}return 0;
}int main()
{//g_hEvent = CreateEvent(NULL,TRUE,FALSE,NULL); //程序员手动复位g_hEvent = CreateEvent(NULL,FALSE,FALSE,NULL); //系统自动复位HANDLE hHandle[2] = {0};DWORD nThreadId[2] = {0};hHandle[0] = CreateThread(NULL,0,PrintProc,NULL,0,&nThreadId[0]);hHandle[1] = CreateThread(NULL,0,ControlProc,NULL,0,&nThreadId[1]);WaitForMultipleObjects(2,hHandle,TRUE,INFINITE);CloseHandle(g_hEvent);system("pause");return 0;
}
windows线程 事件CreateEvent、SetEvent、ResetEvent、CloseHandle相关推荐
- c++ 线程中CreateEvent SetEvent/ResetEvent WaitForSingleObject的使用
HANDLE CreateEvent( LPSECURITY_ATTRIBUTES lpEventAttributes, // 安全属性 BOOL bManualReset, // 复位方式, ...
- CreateEvent() SetEvent() ResetEvent() 进程互斥
首先介绍CreateEvent是创建windows事件的意思,作用主要用在判断线程退出,线程锁定方面. CreateEvent 函功能描述:创建或打开一个命名的或无名的事件对象. EVENT有两种状态 ...
- CreateEvent/SetEvent/ResetEvent和WaitForSingleObject
1.CreateEvent 是创建windows事件的意思,作用主要用在判断线程退出,程锁定方面. 函功能描述:创建或打开一个命名的或无名的事件对象. HANDLE m_hExit; m_hExit= ...
- CreateEvent SetEvent ResetEvent
CreatEvent():创建一个事件对象 SetEvent():把指定事件对象的状态设置为发信号状态 ResetEvent():把指定事件对象的状态设置为不发信号状态 函数CreateEvent创 ...
- Windows编程之CreateEvent,WaitForSingleObject,SetEvent,ResetEvent函数
一 Windows编程之CreateEvent,WaitForSingleObject,SetEvent,ResetEvent函数 1 CreateEvent HANDLE WINAPI Create ...
- 线程中CreateEvent和SetEvent和ReSetEvent及WaitForSingleObject的用法
概述 首先介绍CreateEvent是创建windows事件的意思,作用主要用在判断线程退出,程锁定方面. CreateEvent:创建或打开一个命名的或无名的事件对象. EVENT有两种状态:发信号 ...
- C++事件SetEvent,ResetEvent的使用
一.概念 创建事件: HANDLE CreateEvent( LPSECURITY_ATTRIBUTES lpEventAttributes, // SECURITY_ATTRIBUTES结构指针,可 ...
- 转:线程中CreateEvent和SetEvent及WaitForSingleObject的用法
转自线程中CreateEvent和SetEvent及WaitForSingleObject的用法 首先介绍CreateEvent是创建windows事件的意思,作用主要用在判断线程退出,程锁定方面. ...
- [转载]线程中CreateEvent和SetEvent及WaitForSingle
原文地址:线程中CreateEvent和SetEvent及WaitForSingleObject的用法作者:Sky丶Nie 首先介绍CreateEvent是创建windows事件的意思,作用主要用在判 ...
最新文章
- linux启动sql server数据库,SQL Server数据库启动过程详解及启动不起来的问题分析及解决方法...
- 人工智能——面向对象表示法
- flask处理cookie
- 常见网络命令介绍及使用
- 每天一个linux命令(56):netstat命令
- 干货:数据仓库架构及基础知识
- Easy Math(2018 ACM-ICPC 徐州赛区网络赛 D)
- u盘被保护怎样解除?(第十招)
- Django 博客开发教程 6 - 真正的 Django 博客首页视图
- 加速Qt在线更新--使用traefik-1.7.24(不支持traefik-2.0以上版本
- 使用 TensorFlow 做文本情感分析
- 随手记--关于K-近邻算法
- hadoop安装(超详细)
- cocos2dx +vs2012安装教程
- 记录switch sxos TF卡游戏损坏(纯粹记录,很潦草,多多包涵)
- python取前三位_python的字符串截取||取字符串前三位
- python参考文献及其出版社_参考文献查重-Python
- 如何创建mysql分区表_mysql分区表创建思路
- 【论文学习】7、ieee802.11ah中基于深度学习的载波频偏估计
- 对于 codec(编解码器) 和 container(容器) 的理解