CreateEvent()——创建事件函数

CreateEvent()——创建事件函数

2023年6月22日发(作者:)

CreateEvent()——创建事件函数/****************************************************************************************************   发布⽇期:*   更新⽇期:2017-11-13 17:05:31*   进度:*   作者:Luotian*   备注:事件***************************************************************************************************/事件是⼀个允许⼀个线程在某种情况发⽣时,唤醒另外⼀个线程的同步对象。事件告诉线程何时去执⾏某⼀给定的任务,从⽽使多个线程流平滑CreateEvent是创建windows事件的意思,作⽤主要⽤在判断线程退出,线程锁定⽅⾯.HANDLE CreateEvent(   LPSECURITY_ATTRIBUTES lpEventAttributes, // 安全属性   BOOL bManualReset,   // 复位⽅式  BOOL bInitialState,   // 初始状态   LPCTSTR lpName     //对象名称   );lpEventAttributes:   [输⼊]⼀个指向SECURITY_ATTRIBUTES结构的指针,确定返回的句柄是否可被⼦进程继承。如果lpEventAttributes是NULL,此句柄不能被继承。Windows NT/2000:lpEventAttributes的结构中的成员为新的事件指定了⼀个安全符。如果lpEventAttributes是NULL,事件将获得⼀个默认的安全符。  bManualReset:   [输⼊]指定将事件对象创建成⼿动复原还是⾃动复原。如果是TRUE,那么必须⽤ResetEvent函数来⼿⼯将事件的状态复原到⽆信号状态。如果设置为FALSE,当事件被⼀个等待线程释放以后,系统将会⾃动将事件状态复原为⽆信号状态。   bInitialState:   [输⼊]指定事件对象的初始状态。如果为TRUE,初始状态为有信号状态;否则为⽆信号状态。  lpName:   [输⼊]指定事件的对象的名称,是⼀个以0结束的字符串指针。名称的字符格式限定在MAX_PATH之内。名字是对⼤⼩写敏感的。如果lpName指定的名字,与⼀个存在的命名的事件对象的名称相同,函数将请求EVENT_ALL_ACCESS来访问存在的对象。这时候,由于bManualReset和bInitialState参数已经在创建事件的进程中设置,这两个参数将被忽略。如果lpEventAttributes是参数不是NULL,它将确定此句柄是否可以被继承,但是其安全描述符成员将被忽略。如果lpName为NULL,将创建⼀个⽆名的事件对象。CEvent::SetEvent()把对象设置为有信号状态,释放等待的线程。CEvent::ResetEvent()把对象设置为⽆信号状态,程序在WaitForSingleObject(hHandle,INFINITE)处等待。#include #include #include using namespace std;HANDLE hUp;CRITICAL_SECTION g_data;int arr[10];HANDLE hEvent; //使⽤⼿动重置为⽆信号状态,初始化时有信号状态UINT __stdcall Add(LPVOID lParam){ DWORD dReturn = WaitForSingleObject(hEvent,INFINITE); //有信号时才能得到 for (int i = 0; i<10;i++ ) { arr[i]=i;//0-9 } for (int i = 0;i < 10; i++) { cout<

for (int i = 0; i<100 ;i++) { arr [i] = i+100;//10`1 } for (int i = 0;i < 10; i++) { cout<

发布者:admin,转转请注明出处:http://www.yc00.com/web/1687428378a9311.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信