读书人

多线程编程示范

发布时间: 2012-10-17 10:25:47 作者: rapoo

多线程编程示例


#include "stdafx.h"
#include <windows.h>

#define THREAD_NUM 50 //线程数

CRITICAL_SECTION g_cs;

int ThreadProc(LPVOID lpParam)
{
int x = *(int*)lpParam;
for (int i=0; i<5; i++)
{
EnterCriticalSection(&g_cs);
printf("[%d]:%d\n",x,i);
LeaveCriticalSection(&g_cs);
}
return x;
}

int _tmain(int argc, _TCHAR* argv[])
{
InitializeCriticalSection(&g_cs);

HANDLE hThread[THREAD_NUM];
int nValue[THREAD_NUM];
for (int i=0; i<THREAD_NUM; i++)
{
nValue[i] = i;
hThread[i] = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadProc,(LPVOID)&nValue[i],0,NULL);
}

WaitForMultipleObjects(THREAD_NUM,hThread,TRUE,INFINITE); //等待所有线程执行完毕

DWORD dwCode = 0;
for (int i=0; i<THREAD_NUM; i++)
{
if (GetExitCodeThread(hThread[i],&dwCode)) //获取各个线程的返回值
printf("%d\n",dwCode);
CloseHandle(hThread[i]);
}

DeleteCriticalSection(&g_cs);

return 0;
}

读书人网 >编程

热点推荐