创建10个线程:for(int i=0;i<10;i++)
{
    DWORD ThreadID;
    HANDLE hThread  = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)TestThread,(LPVOID)i,0,&ThreadID);
    Sleep(100);
}线程函数:void TestThread(LPVOID lp)
{
int n = (int)lp;
for(int i=0;i<10000;i++)
{
printf("id: %d\r\n",i);
}
}我的意思是,10个线程 ,每个线程里面显示 10000个,10个就是10W个,但是显示明显不对?不知道我错在哪里。。

解决方案 »

  1.   

    什么不对?我猜你的线程函数的for循环里的printf语句是想把线程号输出来吧,你少了个参数
    printf("id: %d\r\n",i);
    -->
    printf("id: %d %d\r\n, n, i);
      

  2.   


    改为
    HANDLE hThread[10];
    for(int i=0;i<10;i++)
    {
      DWORD ThreadID;
      hThread[i] = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)TestThread,(LPVOID)i,0,&ThreadID);
    }
    WaitForMultipleObjects(10,hThread,TRUE,INFINITE);
      

  3.   

    谢谢2位的回答。
    尤其 是mcaok ~
    我新手没有分。实在不好意思。以后有了一定补上
      

  4.   

    void TestThread(LPVOID lp)
    {
      //socket
    }
    }HANDLE hThread[3];
    for(int i=0;i<3;i++)
    {
      DWORD ThreadID;
      hThread[i] = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)TestThread,(LPVOID)i,0,&ThreadID);
    }
    WaitForMultipleObjects(3,hThread,TRUE,INFINITE);再请教下~同上
    不过我用到了MFC,我设置WaitForMultipleObjects 的第一个参数 nCount 为 3也就是线程数的时候,程序界面无反应了,死了。线程没有执行。。
    修改成 WaitForMultipleObjects(3,hThread,TRUE,3000);或者
    WaitForMultipleObjects(4,hThread,TRUE,INFINITE);
    就可以进入线程请问这个是什么原因啊
      

  5.   

    修改成 WaitForMultipleObjects(3,hThread,TRUE,3000);或者
    WaitForMultipleObjects(4,hThread,TRUE,INFINITE);nCount :3 与 4 是不是就是包含了界面线程?
      

  6.   

    线程函数:void TestThread(LPVOID lp)
    {
    int n = (int)lp;
    for(int i=0;i<10000;i++)
    {
    printf("id: %d\r\n",i);
    }
    }线程函数记得要返回值!应该是下面样子
    DWORD WINAPI ThreadProc(
      LPVOID lpParameter   // thread data
    );
    不是用个强转(LPTHREAD_START_ROUTINE)就可以的。
    线程函数不返回,你等到花儿谢了也等不到。