Win 32では、スレッド内のイベントが使用されます.


下win 32の下のスレッドの使用を研究して、ネット上で多くのすべて使うMFCの下の類CEventを探して、研究を便利にするため、win 32の下のを書いて、具体的なコードは以下の通りです:
///////////////////////////////////////////////////////////
HANDLE hThread;
HANDLE hEvent;

DWORD WINAPI ThreadProc1( LPVOID lpParamenter);

int main(int argc, char* argv[])
{

// PulseEvent , Singled Unsingled。 hEvent = CreateEvent(NULL, TRUE, FALSE, "abc");

hThread = CreateThread(NULL, NULL, ThreadProc1, NULL, NULL, NULL);

getchar();

PulseEvent(hEvent);

Sleep(1000);

getchar();
SetEvent(hEvent);

Sleep(1000);

ResetEvent(hEvent);

getchar();
PulseEvent(hEvent);

Sleep(1000);

TerminateThread(hThread, NULL);

printf("Hello World!
");
return 0;
}

DWORD WINAPI ThreadProc1( LPVOID lParamenter )
{
int iCount = 0;

while( true )
{
WaitForSingleObject(hEvent, INFINITE);
printf("%d
", iCount++);
}

return NULL;
}
///////////////////////////////////////////////////////////
: VC6.0
ヘッダファイル:stdio.h,windows.h(winbase.h)
キー関数:
CreateEventイベントオブジェクト関数の作成
SetEventイベントオブジェクトをSingledに設定
ResetEventイベントオブジェクトをUnsingledに設定
PulseEventは、指定したイベントをSingledに設定します.手動リセットイベントの場合、イベントを待っているすべてのスレッドがアクティブになります.関数は、イベントを戻して返します.自動リセットイベントの場合、イベントを待機している保留中の単一スレッドがアクティブになります.その後、イベントはUnsingledに戻され、関数は返されます.
WaitForSingleObjectウエイトオブジェクト関数
自動リセットモードではPulseEventとSetEventの役割に違いはありませんが、手動モードではPulseEventに明らかな違いがあり、簡単な制御プログラムは単一ステップで行くか、連続で歩くかをコントロールすることができます.ループを要求通りに1回実行させるならPulseEvent、ループを連続して停止させたいならSetEvent、停止を要求するところにResetEventを送ればOKです.
本文は“飘~~~”のブログから出て、転載して作者と連絡してください!