VC ++ 利用系统函数 QueueUserWorkItem 实现多线程例子
#include <iostream>
#include <assert.h>
#include <Windows.h>
#include <string>
using namespace std;
DWORD WINAPI TestThreadPool1(PVOID pContext);
DWORD WINAPI TestThreadPool2(PVOID pContext);
DWORD WINAPI TestThreadPool3(PVOID pContext);
CRITICAL_SECTION g_cs;
int main(int argc, char * argv[])
{
CompleteEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
InitializeCriticalSection(&g_cs);
QueueUserWorkItem(TestThreadPool1, L"Hello World", WT_EXECUTEINLONGTHREAD);
QueueUserWorkItem(TestThreadPool2, L"Hello World", WT_EXECUTEINLONGTHREAD);
QueueUserWorkItem(TestThreadPool3, L"Hello World", WT_EXECUTEINLONGTHREAD);
WaitForSingleObject(CompleteEvent, INFINITE);
DeleteCriticalSection(&g_cs);
CloseHandle(CompleteEvent);
//getchar();
return 0;
}
DWORD WINAPI TestThreadPool1(PVOID pContext)
{
//Sleep(1000);
for(int i=0;i<=100;i++)
{
EnterCriticalSection(&g_cs);
cout<<"One Thread is : "<<i<<endl;
LeaveCriticalSection(&g_cs);
}
return 0;
}
DWORD WINAPI TestThreadPool2(PVOID pContext)
{
for(int i=0;i<=100;i++)
{
EnterCriticalSection(&g_cs);
cout<<"Two Thread is : "<<i<<endl;
LeaveCriticalSection(&g_cs);
}
return 0;
}
DWORD WINAPI TestThreadPool3(PVOID pContext)
{
for(int i=0;i<=100;i++)
{
EnterCriticalSection(&g_cs);
cout<<"Three Thread is : "<<i<<endl;
LeaveCriticalSection(&g_cs);
}
return 0;
}
本文介绍了一种使用VC++通过系统函数QueueUserWorkItem来实现多线程的方法。示例代码中创建了三个独立的线程,并通过临界区确保线程安全地输出各自的状态信息。
8765

被折叠的 条评论
为什么被折叠?



