http://blog.csdn.net/zhouhangjay/article/details/21538791
- #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;
- }