最近无聊写了个小程序,在主进程中开一个线程,让这个线程不断的开线程,来测试最多能开多少线程。结果每次执行的结果都是2010(加上主线程和另外开的一个线程,一共是2012个线程)。
程序地址如下:
http://feng32.50webs.com/ThreadMark.zip
核心代码如下(C语言的):
问题是:为什么只能开2010个线程?能想办法开更多的线程吗?
程序地址如下:
http://feng32.50webs.com/ThreadMark.zip
核心代码如下(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个线程?能想办法开更多的线程吗?