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;
}