事件

简单使用

#include <Windows.h>
#include <process.h>
#include <stdio.h>
#include <stdlib.h>
//用事件进行线程的通信
HANDLE event[1] = { 0 };		//声明句柄集合,存放事件
HANDLE  THEADCOUNT[2] = { 0 };          //声明句柄集合,存放线程

DWORD WINAPI func1(PVOID *p)
{
	printf("func1\n");
	MessageBoxA(0, "hello", "hello", 0);
	SetEvent(event[0]);			                                 //设置事件处于有信号的(相当于发出通知)
	return 0;
}

DWORD WINAPI func2(PVOID *p)
{
	printf("func2\n");
	WaitForSingleObject(event[0], INFINITE);				         //等待事件信号(相当于收到通知)
	MessageBoxA(0, "word", "word", 0);
	return 0;
}


int main(int argc, char *agv[])
{
	event[0] = CreateEvent(NULL, TRUE, FALSE, NULL);                       //参数2代表是否复位 TURE手动 FALSE自动 	
	THEADCOUNT[0] = CreateThread(NULL, 0, func1, NULL, 0, NULL);
	THEADCOUNT[1] = CreateThread(NULL, 0, func2, NULL, 0, NULL);

	WaitForMultipleObjects(2, THEADCOUNT, TRUE, INFINITE);                 //等待所有子线程执行完毕

	getchar();
	return 0;
}

看图说话


秋风 2016-07-02