我创建了一个多线程程序。这里一个线程打印“Hello”,另一个打印“World”,输出将是“Hello World”50 次。它工作正常,但它使用的是事件,它是内核对象,需要在用户模式和内核之间切换。任何人都可以在 VC++ 中建议任何更轻的版本,而不是 C# 或 java。
#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;
}