//一个线程之间的通讯
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)
{