首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

怎么用C++创建100个线程

2012-03-16 
如何用C++创建100个线程?给出代码,最好不用线程池,非常感谢![解决办法]C/C++ code#include stdio.h#incl

如何用C++创建100个线程?
给出代码,最好不用线程池,非常感谢!

[解决办法]

C/C++ code
#include <stdio.h>#include <windows.h>void ThreadFunc(LPVOID pParam){    printf("Thread %d is created!\n",pParam);}int main(int argc,char *argv[]){    HANDLE   hThread;      DWORD   dwThreadId;    for(int i = 0;i < 100;++i){        hThread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadFunc,(LPVOID)(i+1),0,&dwThreadId);        //这里用线程句柄干一些事    }    return 0;}
[解决办法]
windows,CreateThread循环100次
linux,pthread_create循环100次
[解决办法]
[code=C/C++][/code]
探讨
mscf给出的代码运行的时候为什么没有100个线程输出?50个都不到

[解决办法]
WINDOW:WaitForMultipleObjects(100,Pid,TRUE,INFINITE);
LINUX:
for(i=0;i<100; i++)
{
pthread_join(Pid[i],NULL);
}
[解决办法]
C/C++ code
//方案1#include <stdio.h>#include <windows.h>void a(int tid) {    printf("%03d a\n",tid);}void b(int tid) {    printf("%03d b\n",tid);}void ThreadFunc(LPVOID pParam){    int tid=(int)pParam;    if (0==tid%2) a(tid);    else          b(tid);}int main(int argc,char *argv[]){    HANDLE   hThread;    DWORD   dwThreadId;    for(int i = 0;i < 100;++i){        hThread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadFunc,(LPVOID)(i+1),0,&dwThreadId);    }    getchar();    return 0;}//和//方案2#include <stdio.h>#include <windows.h>void a(int tid) {    printf("%03d a\n",tid);}void b(int tid) {    printf("%03d b\n",tid);}void ThreadFuncA(LPVOID pParam){    a((int)pParam);}void ThreadFuncB(LPVOID pParam){    b((int)pParam);}int main(int argc,char *argv[]){    HANDLE   hThread;    DWORD   dwThreadId;    for(int i = 0;i < 100;++i){        if (0==(i+1)%2) {            hThread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadFuncA,(LPVOID)(i+1),0,&dwThreadId);        } else {            hThread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadFuncB,(LPVOID)(i+1),0,&dwThreadId);        }    }    getchar();    return 0;}//这两个方案有本质区别吗?我看是没有。 

热点排行