一个进程中线程的最大个数计算方法
最近无聊写了个小程序,在主进程中开一个线程,让这个线程不断的开线程,来测试最多能开多少线程。结果每次执行的结果都是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个线程?能想办法开更多的线程吗?