[Win32]事件
2021-03-03 06:28
标签:security lpn object 系统 char* 有一个 释放 ons handle 一、通知类型 HANDLE CreateEvent( BOOL bManualReset, // reset type //希望Event是通知类型填写true ); 二、线程同步 .线程互斥:线程互斥是指对于共享的进程系统资源,在各单个线程访问时的排它性,当有若干个线程访问同一个资源。最多只允许一个线程使用,其他要使用的必须等待,直到占用资源者释放该资源。(有我没你,有你没我) 线程同步:线程同步就是线程之间的一种制约关系,一个线程的执行依赖另外一个线程的消息,当它没有得到另外一个线程的消息时应等待,直到消息到达被唤醒。同步=互斥+有序
图中说明互斥后未必是A执行一次B执行一次有可能A线程执行多次,互斥只能有一个线程执行,线程同步,两个线程互斥,互斥+有序就是线程同步。 [Win32]事件 标签:security lpn object 系统 char* 有一个 释放 ons handle 原文地址:https://www.cnblogs.com/websecyw/p/12989844.html
LPSECURITY_ATTRIBUTES lpEventAttributes, // SD 安全描述符号
BOOL bInitialState, // initial state //是否创建立马可以使用(有无信号)
LPCTSTR lpName // object name 起名称// my8.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "windows.h"
HANDLE g_hEvent;
DWORD WINAPI ThreadProc_1(LPV0ID lpParameter)
{
TCHAR szBuffer[10]={0};
WaitForSingleObject(g_hEvent,INFINITE);
printf("ThreadProc_1执行了 \n");
getchar();
return 0;
}
DWORD WINAPI ThreadProc_2(LPV0ID lpParameter)
{
TCHAR szBuffer[10]={0};
WaitForSingleObject(g_hEvent,INFINITE);
printf("ThreadProc_2执行了 \n");
getchar();
return 0;
}
int main(int argc, char* argv[])
{ //参数二默认安全属性 TRUE通知/FALSE互斥
g_hEvent = CreateEvent(NULL,TRUE,FALSE,NULL); //通知改,互斥不改
HANDLE hThread[2];
hThread[0]=CreateThread(NULL,0,ThreadProc_1,NULL,0,NULL);
hThread[1]=CreateThread(NULL,0,ThreadProc_2,NULL,0,NULL);
SetEvent(g_hEvent); //把自己挂起唤醒另外一个线程
WaitForMutiple0bjects(2,hThread,TRUE,INFINITE);
CloseHandle(hThread[0]);
CloseHandle(hThread[1]);
CloseHandle(g_hEvent);
return 0;
}