阅读背景:

线程2:线程通信事件机制(单线程、两个线程、多个线程通信)

来源:互联网 

//一个线程之间的通讯
 DWORD WINAPI firstthread(void *p)
 {
 	MessageBoxA(0, "1", "1", 0);
 	printf("第1个线程履行完成\n");
 	SetEvent(event[0]);//发失事件信号
 	return 0;
 }
 DWORD WINAPI secondthread(void *p)
 {
 	WaitForSingleObject(event[0], INFINITE);//期待event信号涌现,履行下一步
 	MessageBoxA(0, "2", "2", 0);
 	printf("第2个线程履行完成\n");
 	return 0;
 }
 void main()
 {
 	//SECURITY_ATTRIBUTES,指定一个构造,用于设置对象的安全特征。如变成ByVal As Long,并传递零值,则表明应用对象默许的安全设置
 	//Long,如果为TRUE,表现创立一个人工重设事件;如果为FALSE,表现创立一个主动重设事件
 	//Long,如事件应内部进入触发状况,则为TRUE
 	//String,指定事件对象的名字。用vbNullString创立一个未命名事件对象。如已存在具有这个名字的一个事件,
	 //则现有的命名事件就会打开。这个名字可能不与一个现有互斥体、信号机、可期待计时器或文件映照的名字符合
 	event[0] = CreateEvent(NULL, TRUE, FALSE, NULL);//创立事件
 	event[1] = CreateEvent(NULL, TRUE, FALSE, NULL);
 
 	hthread[0]=CreateThread(NULL, 0, firstthread, NULL, 0, NULL);
 	hthread[1] = CreateThread(NULL, 0, secondthread, NULL, 0, NULL);
 
 	WaitForMultipleObjects(2, hthread, TRUE, INFINITE);
 	printf("线程义务完成\n");
 	system("pause");
 }//一个线程之间的通讯
 DWORD WINAPI firstthread(void *p)
 {




你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: