`
zhengjunwei2007_163.com
  • 浏览: 126649 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多

默认情况下,一个线程的栈要预留1M的内存空间
而一个进程中可用的内存空间只有2G,所以理论上一个进程中最多可以开2048个线程
但是内存当然不可能完全拿来作线程的栈,所以实际数目要比这个值要小。
你也可以通过连接时修改默认栈大小,将其改的比较小,这样就可以多开一些线程。
如将默认栈的大小改成512K,这样理论上最多就可以开4096个线程。

即使物理内存再大,一个进程中可以起的线程总要受到2GB这个内存空间的限制。
比方说你的机器装了64GB物理内存,但每个进程的内存空间还是4GB,其中用户态可用的还是2GB。


如果是同一台机器内的话,能起多少线程也是受内存限制的。每个线程对象都要站用非页面内存,而非页面内存也是有限的,当非页面内存被耗尽时,也就无法创建线程了。

如果物理内存非常大,同一台机器内可以跑的线程数目的限制值会越来越大。  

在Windows下写个程序,一个进程Fork出2000个左右线程就会异常退出了,为什么?

这个问题的产生是因为windows32位系统,一个进程所能使用的最大虚拟内存为2G,而一个线程的默认线程栈StackSize为1024K(1M),这样当线程数量逼近2000时,2000*1024K=2G(大约),内存资源就相当于耗尽。

分享到:
评论

相关推荐

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

     即使物理内存再大,一个进程中可以起的线程总要受到2GB这个内存空间的限制。  比方说你的机器装了64GB物理内存,但每个进程的内存空间还是4GB,其中用户态可用的还是2GB。  如果是同一台机器内的话,能起...

    Windows系统的多线程同步 代码

    利用Windows提供的MFC类编程实现读者/写者的同步互斥问题,保证: 1)一个人在写时,其他人不允许写; 2)一个人在写时,其他人不允许读; 3)一个人在读时,其他人不允许写; 4)一个人在读时,其他人允许读。

    多线程操作实例源码

    多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。浏览器就是一个很好的多线程的例子,在浏览器中你可以...

    多线程操作实例源码,,

    多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。浏览器就是一个很好的多线程的例子,在浏览器中你可以...

    读写者实现问题 操作系统

    在Windows2000环境下,创建一个控制台进程,此进程包含n个线程。用这n个线程来表示n个读者或写者。每个线程按相应测试数据文件的要求进行读写操作。用信号量机制分别实现读者优先和写者优先问题。 1、读者-写者问题...

    《计算机操作系统教程》习题详解(第二版)

    例如,在Windows操作系统中,mp3播放进程和Word字处理进程可以并发执行,这样用户就可以边听音乐边写文章了。 (3) 处理机与设备之间的并行。例如,当处理机进行科学运算时,打印机可以打印文档。 (4) 处理机与通道...

    操作系统课程设计-读者写者问题

    在Windows2000环境下,创建一个控制台进程,此进程包含n个线程。用这n个线程来表示n个读者或写者。每个线程按相应测试数据文件(后面介绍)的要求进行读写操作。用信号量机制分别实现读者优先和写者优先问题。 读者-...

    东华大学 操作系统实验 读者写者问题 含源代码和报告

    在Windows2000环境下 创建一个控制台进程 此进程包含n个线程 用这n个线程来表示n个读者或写者 每个线程按相应测试数据文件 后面有介绍 的要求进行读写操作 用信号量机制分别实现读者优先和写者优先的读者 写者问题 ...

    linux多线程编程入门

    现在,多线程技术已经被许多操作系统所支持,包括Windows/NT,当然,也包括Linux。  为什么有了进程的概念后,还要再引入线程呢?使用多线程到底有哪些好处?什么的系统应该选用多线程?我们首先必须回答这些问题。

    操作系统课程设计读者-写者问题的实现

    在Windows 2000/XP环境下,使用多线程和信号量机制实现经典的读者写者问题,每个线程代表一个读者或一个写者。每个线程按相应测试数据文件的要求,进行读写操作。请用信号量机制分别实现读者优先和写者优先的读者-写...

    操作系统实验实验进程管理

    BOOL bInheritHandle 一种标志,告诉系统允许新进程继承创建者进程的句柄 DWORD dwCreationFlage 特殊的创建标志 (如CREATE_SUSPENDED) 的位标记 LPVOID lpEnvironment 向新进程发送的一套环境变量;如为null值则...

    操作系统课程设计生产者和消费者问题源代码

    在Windows2000环境下,创建一个控制台进程,在此进程中创建n个线程来模拟生产者或者消费者。这些线程的信息由本程序定义的“测试用例文件”中予以指定。 该文件的格式和含义如下: 3 1 P 3 2 P 4 3 C 4 1 4 P 2 5 C ...

    操作系统之读者写者问题

    在Windows环境下实现n个进程的并发执行,模拟读者与写者问题的... 运行显示结果要求:要求在每个线程创建后发出读写操作、开始读写操作和结束读写操作时分别显示一行提示信息,以确定所有的处理都遵守相应的读写操作限制.

    WRK以及相关的分析工具.7z

    适用于《Windows内核原理与实现》这本书,适合想探索Windows操作系统的兄弟们 ProcMon,进程和线程监视工具。它可以实时地显示当前每个处理器正在执行哪些进程和线程。这些信息还可以被转储到一个文本文件中供进一步...

    Windows 系统错误代码简单分析

    Microsoft Windows 系统错误代码简单分析:  0000 操作已成功完成。  0001 错误的函数。  0002 系统找不到指定的文件。  0003 系统找不到指定的路径。  0004 系统无法打开文件。  0005 拒绝访问。...

    windows安全机制API大集合模块源码

    2、windows 用户的权限管理,如针对用户或者进程,线程,允许调试程序,禁止登陆,禁止使用网络,允许修改系统时间,允许设置文件安全属性等等。3、对文件或者其他对象的安全标示符的操作:禁止某些用户访问,设置...

    linux多线程详解说明

    现在,多线程技术已经被许多操作系统所支 持,包括Windows也包括Linux。 为什么有了进程的概念后,还要再引入线程呢?使用多线程到底有哪些好处?什么的系统应该选用多线程?我们首先必须回答这些问题。 使用多线程...

    windows 程序设计

    Windows 98和Windows NT都是支持32位优先权式多任务(preemptive multitasking)及多线程的图形操作系统。Windows拥有图形使用者接口(GUI ),这种使用者界面也称作「可视化接口」或「图形窗口环境」。有关GUI的概念...

    操作系统(内存管理)

    并且,如果地址在硬盘上而不是在 RAM 中,那么操作系统将暂时停止您的进程,将其他内存转存到硬盘中,从硬盘上加载被请求的内存,然后再重新启动您的进程。这样,每个进程都获得了自己可以使用的地址空间,可以访问...

    Linux系统下的多线程编程入门

    线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期, solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就...

Global site tag (gtag.js) - Google Analytics