首页 > Asp.net开发 > 一个进程中线程的最大个数计算方法

一个进程中线程的最大个数计算方法

最近无聊写了个小程序,在主进程中开一个线程,让这个线程不断的开线程,来测试最多能开多少线程。结果每次执行的结果都是2010(加上主线程和另外开的一个线程,一共是2012个线程)。

程序地址如下:

http://feng32.50webs.com/ThreadMark.zip

核心代码如下(C语言的):

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// Create threads as many as possible
while(TRUE)
{
    hThread = CreateThread(0, 0, TestThreadProc, 0, 0, 0);
    if( hThread != NULL )
    {
        // ...
        g_arrhThreads[g_nThreads] = hThread;
        g_nThreads += 1;
    }
    else // Error occurred
    {
        // ...
        // Stop Threads
        g_bContinue = FALSE;
        WaitForMultipleObjects(g_nThreads, g_arrhThreads, TRUE, INFINITE);
        break;
    }
    Sleep(0);
}
// 线程函数如下
DWORD WINAPI TestThreadProc(LPVOID lpParam)
{
    while( g_bContinue )
    {
        Sleep(1);
    }
    return 0;
}

问题是:为什么只能开2010个线程?能想办法开更多的线程吗?


本文固定链接: http://www.devba.com/index.php/archives/3800.html | 开发吧

报歉!评论已关闭.