マルチスレッドプログラムを作成しました。ここでは、1 つのスレッドが「Hello」を出力し、別のスレッドが「World」を出力し、出力は「Hello World」を 50 回出力します。正常に動作しますが、イベントを使用しています。これはカーネル オブジェクトであり、ユーザー モードとカーネルを切り替える必要があります。C#やJavaではなく、VC ++の軽量バージョンを提案できますか。
#include <Windows.h>
static HANDLE event1 = CreateEvent(NULL, TRUE, TRUE, NULL);
static HANDLE event2 = CreateEvent(NULL, TRUE, TRUE, NULL);
DWORD WINAPI ThreadHello( __in LPVOID lpParameter)
{
for( int i = 0 ; i < 50 ; i++ )
{
WaitForSingleObject(event1, INFINITE);
ResetEvent(event1);
printf("%s ", "Hello");
SetEvent(event2);
}
return 1;
}
DWORD WINAPI ThreadWorld( __in LPVOID lpParameter)
{
for( int i = 0 ; i < 50 ; i++)
{
WaitForSingleObject(event2, INFINITE);
ResetEvent(event2);
printf("%s\n", "World");
SetEvent(event1);
}
return 1;
}
int _tmain(int argc, _TCHAR* argv[])
{
CreateThread(NULL, 0, ThreadHello, (LPVOID)0, 0, 0);
CreateThread(NULL, 0, ThreadWorld, (LPVOID)0, 0, 0);
getchar();
return 0;
}