HANDLE m_hEventKill;
HANDLE m_hEventInput;
HANDLE m_hThread;m_hThread=CreateThread(NULL,0, LPTHREAD_START_ROUTINE (InputStreamThread),this,0,&dw);
m_hEventInput= CreateEvent(NULL,TRUE,FALSE,NULL);
m_hEventKill= CreateEvent(NULL,FALSE,FALSE,NULL);
SetEvent(m_hEventInput);
ResetEvent(m_hEventInput);
WaitForMultipleObjects(2,hMulEvents,FALSE,INFINITE)
HANDLE m_hEventInput;
HANDLE m_hThread;m_hThread=CreateThread(NULL,0, LPTHREAD_START_ROUTINE (InputStreamThread),this,0,&dw);
m_hEventInput= CreateEvent(NULL,TRUE,FALSE,NULL);
m_hEventKill= CreateEvent(NULL,FALSE,FALSE,NULL);
SetEvent(m_hEventInput);
ResetEvent(m_hEventInput);
WaitForMultipleObjects(2,hMulEvents,FALSE,INFINITE)
CreateEvent是创建事件
SetEvent是设置事件有信号
ResetEvent是设置事件无信号
WaitForMultipleObjects是等待信号
各个参数的含义在MSDN中都有详细说明
看看MSDN就知道了
这个参数应该定义为数组,并将两个事件handle填入其中
[<<windows内核编程>>第三章有解释]CreateThread()[这个函数有缺陷,很少用,通常用_beginthread()或是后加Ex]
的返回值是个线程内核句柄,为什么要返回它? 因为有可能你要控制它,比方说:
你又在此进程创建了一个线程,在这个线程中你要强制终止上面这个线程,
那么,就可以用TerminateThread(hYourthread,...).CreateEvent()的返回值是一个事件内核句柄,事件内核对象可用于线程,进程
间同步,或是消息传递.(哦,这个消息不是windows消息). 比方说:你的进程中
存在三个线程:A B C, 线程A用TerminateThread(hBthread,..)强制终止B线程,
成功后,就用个SetEvent(hYourEvent,..)设置YourEvent对象,让它成为有信号
状态. 线程C一直等待系统是否终止了B线程,若终止就运行其它代码.那么如何
判断是否终止那? 就用WaitForSingleObject(hYourEvent,..)直等到YourEvent
成为有信号为止,此函数才会返回,此下面的代码也才能继续执行.over!
如果用MFC,应该使用CEvent的对象。