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

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

程序地址如下:

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

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

C# code
?
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个线程?能想办法开更多的线程吗?

版权声明:本文为博主原创文章,未经博主允许不得转载。

WINDOWS操作系统中可以允许最大的线程数

默认情况下,一个线程的栈要预留1M的内存空间 而一个进程中可用的内存空间只有2G,所以理论上一个进程中最多可以开2048个线程 但是内存当然不可能完全拿来作线程的栈,所以实际数目要比这个值要小...
  • Tony_Wong
  • Tony_Wong
  • 2014年09月01日 11:30
  • 2008

【C#】进程中最大线程创建数量分析

【C#】进程中最大线程创建数量分析作者:凡星 QQ:184167125 一、 简介 多线程在当今软件开发中应用非常广泛,在实际开发过程中,发现很多不正确使用线程的现象,其中一点就是线程使用过于...
  • easydw
  • easydw
  • 2016年01月04日 13:44
  • 3110

C# 线程池ThreadPool的用法简析

什么是线程池?为什么要用线程池?怎么用线程池? 1. 什么是线程池?         .NET Framework的ThreadPool类提供一个线程池,该线程池可用于执行任务、发送工作项、处理异步 ...
  • smooth_tailor
  • smooth_tailor
  • 2016年09月07日 16:09
  • 13975

C#获取本地计算机名,IP,MAC地址,硬盘ID

转自:http://www.cnblogs.com/qixuejia/archive/2011/01/12/1933442.htmlusing System; using System.Data; u...
  • zhichao2001
  • zhichao2001
  • 2017年01月14日 23:19
  • 788

初探 C# GPU 通用计算技术

GPU 的并行计算能力高于 CPU,所以最近也有很多利用 GPU 的项目出现在我们的视野中,在 InfoQ 上看到这篇介绍 Accelerator-V2 的文章,它是微软研究院的研究项目,需要注册...
  • szu030606
  • szu030606
  • 2014年04月05日 18:41
  • 1706

关于C#线程,线程池和并行运算的简单使用和对比

前言:看了书上两个使用C#4.0并行编程的demo,又对照以前收藏的网上几篇讲述线程池的雄文,一并整理,写个示例总结一下。写这篇文章的时候,发现关于线程的好几个基础的重要的知识点自己都不熟悉,而且可能...
  • q317379184
  • q317379184
  • 2013年08月30日 15:56
  • 1280

WINDOWS操作系统中可以允许最大的线程数

默认情况下,一个线程的栈要预留1M的内存空间   而一个进程中可用的内存空间只有2G,所以理论上一个进程中最多可以开2048个线程   但是内存当然不可能完全拿来作线程的栈,所以实际数目要比这个值要小...
  • educast
  • educast
  • 2013年12月29日 11:11
  • 7032

设置线程堆栈大小-----一台电脑最多能开启多少个线程

//http://www.cnblogs.com/nsnow/archive/2010/08/06/1794490.html //http://blog.csdn.net/nokianasty/art...
  • woshiyuanlei
  • woshiyuanlei
  • 2015年04月15日 14:53
  • 2295

【转】Java线程池的那些事--线程计算公式

熟悉java多线程的朋友一定十分了解java的线程池,jdk中的核心实现类为java.util.concurrent.ThreadPoolExecutor。大家可能了解到它的原理,甚至看过它的源码;但...
  • wenfanhugh
  • wenfanhugh
  • 2016年09月01日 00:56
  • 909

单个进程最大线程数

原文链接:http://jzhihui.iteye.com/blog/1271122 windows 操作系统中允许的最大线程数。   =====================...
  • zhao9tian
  • zhao9tian
  • 2014年08月20日 10:21
  • 3862
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个进程中线程的最大个数计算方法
举报原因:
原因补充:

(最多只允许输入30个字)