[Win32]事件

2021-03-03 06:28

阅读:594

标签:security   lpn   object   系统   char*   有一个   释放   ons   handle   

一、通知类型

HANDLE CreateEvent(
LPSECURITY_ATTRIBUTES lpEventAttributes, // SD 安全描述符号

BOOL bManualReset, // reset type  //希望Event是通知类型填写true
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;

}

二、线程同步

.线程互斥:线程互斥是指对于共享的进程系统资源,在各单个线程访问时的排它性,当有若干个线程访问同一个资源。最多只允许一个线程使用,其他要使用的必须等待,直到占用资源者释放该资源。(有我没你,有你没我)

线程同步:线程同步就是线程之间的一种制约关系,一个线程的执行依赖另外一个线程的消息,当它没有得到另外一个线程的消息时应等待,直到消息到达被唤醒。同步=互斥+有序

技术图片

 

图中说明互斥后未必是A执行一次B执行一次有可能A线程执行多次,互斥只能有一个线程执行,线程同步,两个线程互斥,互斥+有序就是线程同步。

 

[Win32]事件

标签:security   lpn   object   系统   char*   有一个   释放   ons   handle   

原文地址:https://www.cnblogs.com/websecyw/p/12989844.html


评论


亲,登录后才可以留言!