我的WindowsXP, 单进程最多创建2008个线程。我朋友机器上最多2009个。是不是Windows系统都这样?还是说Windows Server不一样?最多多少进程呢?

解决方案 »

  1.   

    按照楼上所说的,创建线程时,默认为每个线程分配一个1MB的栈,2000多个线程就起码占用了2000M内存。。有点道理的。
      

  2.   

    和系统最大句柄数有关。
    Win2000以后系统本身不限制句柄数,实际取决于CPU和内存。
    我同样2G内存,公司里PD820只能支持1W5个句柄,并且已经开不了新窗口了。,而我家里到了2W也不会卡。
      

  3.   

    做了个简单的实验,为什么我创建4000个进程(1MBstack),还是全部都返回成功?但是在进程管理器里面看不到那么多进程,都是2000多个,数目不确定,2000到2050都有?
      

  4.   

    http://blogs.msdn.com/oldnewthing/archive/2003/10/08/55239.aspx我写了个测试程序,每次在我的机器上可以创建出3万多的线程(任务管理器里面可以看到)#define MAX_THREADS 50000DWORD WINAPI ThreadProc( LPVOID lpParam ){
    while(1){
    Sleep(100000);
    }
    return 0;
    }int main() {
        DWORD dwThreadId[MAX_THREADS];
        HANDLE hThread[MAX_THREADS];  for(int i = 0; i < MAX_THREADS; ++i){
            hThread[i] = CreateThread(0, 64, ThreadProc, 0, STACK_SIZE_PARAM_IS_A_RESERVATION, &dwThreadId[i]);
    if(0 == hThread[i]){
    DWORD e = GetLastError();
    printf("%d\r\n",e);
    break;
    }
    }
    ThreadProc(0);
    }
      

  5.   

    上面的link错了,应是
    http://blogs.msdn.com/oldnewthing/archive/2005/07/29/444912.aspx