[Win32]事件
Posted websecyw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Win32]事件相关的知识,希望对你有一定的参考价值。
一、通知类型
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执行了 "); getchar(); return 0; } DWORD WINAPI ThreadProc_2(LPV0ID lpParameter) { TCHAR szBuffer[10]={0}; WaitForSingleObject(g_hEvent,INFINITE); printf("ThreadProc_2执行了 "); 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; }
二、线程同步
<1>.线程互斥:线程互斥是指对于共享的进程系统资源,在各单个线程访问时的排它性,当有若干个线程访问同一个资源。最多只允许一个线程使用,其他要使用的必须等待,直到占用资源者释放该资源。(有我没你,有你没我)
<2>线程同步:线程同步就是线程之间的一种制约关系,一个线程的执行依赖另外一个线程的消息,当它没有得到另外一个线程的消息时应等待,直到消息到达被唤醒。同步=互斥+有序
图中说明互斥后未必是A执行一次B执行一次有可能A线程执行多次,互斥只能有一个线程执行,线程同步,两个线程互斥,互斥+有序就是线程同步。
以上是关于[Win32]事件的主要内容,如果未能解决你的问题,请参考以下文章