通知创建1、2两个线程,在vc++6.0中1线程会执行两次,不知为什么?(请大佬指点?)
但在Dev-C++中会执行两次。
看来得看下反汇编(^ ^)
关键字:线程、创建事件
// _13 事件.cpp : Defines the entry point for the console application.
//
#include <stdio.h>
#include <windows.h>
HANDLE g_hEvent;
//第一个线程
DWORD WINAPI ThreadProc_1( LPVOID lpParameter ) {
TCHAR temp[10] = {0};
//当事件变成已通知时
WaitForSingleObject( g_hEvent, INFINITE );
//线程执行
printf( "TheThreadProc_1执行了 \n" );
getchar();
return 0;
}
//第二个线程
DWORD WINAPI ThreadProc_2( LPVOID lpParameter ) {
TCHAR temp[10] = {0};
//当事件变成已通知时
WaitForSingleObject( g_hEvent, INFINITE );
//线程执行
printf( "TheThreadProc_2执行了 \n" );
getchar();
return 0;
}
int main(int argc, char* argv[])
{
//创建事件
//默认安全属性 true通知 false互斥 初始没有信号 没有名字
g_hEvent = CreateEvent( NULL, TRUE, TRUE, 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 );
//等待线程结束,销毁内核对象
WaitForMultipleObjects( 2, hThread, TRUE, INFINITE );
CloseHandle( hThread[0] );
CloseHandle( hThread[1] );
CloseHandle( g_hEvent );
return 0;
}