默认情况下,一个线程的栈要预留1M的内存空间
而一个进程中可用的内存空间只有2G,所以理论上一个进程中最多可以开2048个线程
但是内存当然不可能完全拿来作线程的栈,所以实际数目要比这个值要小。
你也可以通过连接时修改默认栈大小,将其改的比较小,这样就可以多开一些线程。
如将默认栈的大小改成512K,这样理论上最多就可以开4096个线程。
即使物理内存再大,一个进程中可以起的线程总要受到2GB这个内存空间的限制。
比方说你的机器装了64GB物理内存,但每个进程的内存空间还是4GB,其中用户态可用的还是2GB。
如果是同一台机器内的话,能起多少线程也是受内存限制的。每个线程对象都要站用非页面内存,而非页面内存也是有限的,当非页面内存被耗尽时,也就无法创建线程了。
如果物理内存非常大,同一台机器内可以跑的线程数目的限制值会越来越大。
在Windows下写个程序,一个进程Fork出2000个左右线程就会异常退出了,为什么?
这个问题的产生是因为windows32位系统,一个进程所能使用的最大虚拟内存为2G,而一个线程的默认线程栈StackSize为1024K(1M),这样当线程数量逼近2000时,2000*1024K=2G(大约),内存资源就相当于耗尽。
分享到:
相关推荐
即使物理内存再大,一个进程中可以起的线程总要受到2GB这个内存空间的限制。 比方说你的机器装了64GB物理内存,但每个进程的内存空间还是4GB,其中用户态可用的还是2GB。 如果是同一台机器内的话,能起...
操作系统中的Windows多线程是计算机程序设计中的一个重要概念,尤其在C++编程中,它允许开发者在同一时间执行多个任务或代码段,提高了程序的效率和响应性。在XP操作系统上,多线程技术被广泛应用于各种应用程序,如...
【Windows 2000线程间通信】是操作系统中的一种机制,允许同一进程或不同进程的线程之间进行信息交换。这一通信机制基于Windows 2000提供的内核对象,包括文件、文件映射、邮件槽和命名管道等多种方式。其中,文件和...
### 操作系统中的多线程创建与读者写者问题解析 #### 多线程概念介绍 在计算机科学中,线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。一个进程可以拥有多个线程,而每个...
在Windows操作系统中,提供了多种线程同步机制,如临界区、事件、信号量以及互斥量等。本主题将深入探讨未使用和使用Windows互斥量的线程同步方案,以及Peterson算法这一经典的软件解决方案。 首先,未使用Windows...
在Windows操作系统中,可以通过`CreateMutex`函数创建一个未锁定的Mutex对象。线程在进入临界区之前调用`WaitForSingleObject`或`WaitForMultipleObjects`获取Mutex,使得其他线程无法同时访问;在离开临界区后调用`...
《Windows操作系统内核深入编程》一书是针对对Windows系统底层机制有浓厚兴趣的开发者和研究者的重要参考资料。这本书深入探讨了Windows操作系统的核心组件、工作原理以及如何进行系统级编程。书中涵盖了C++语言在...
在Windows操作系统中,我们可以使用任务管理器来查看CPU的基本信息,包括核心数和线程数。但在某些情况下,可能需要更详细或自动化的方式来获取这些数据,这时,"获取本机CPU支持的最大线程数"这样的绿色免安装程序...
操作系统课程设计中的多线程同步是一个关键的概念,它涉及到如何在多个执行线程之间协调工作,确保数据的一致性和程序的正确性。在本项目中,我们使用Visual C++作为开发环境,这是一个强大的Windows平台上的集成...
操作系统中的多线程技术是现代计算机程序设计的重要组成部分,它允许多个执行流在单个进程中并发运行,从而提高系统资源的利用率和程序的执行效率。在这个“操作系统多线程的创建”主题中,我们将深入探讨多线程的...
在本文中,我们将深入探讨如何使用C#编程语言在Windows操作系统环境下实现多线程同步打印文章的实验。这个实验的核心是创建两个独立的线程,一个用于文章的下载,另一个用于文章的打印,同时利用线程同步机制确保...
在Windows操作系统中,进程是计算机执行的基本单元,它们代表了运行中的程序实例。每个进程都有自己独立的内存空间,包括代码、数据、堆栈等。理解Windows操作系统中的进程工作原理对于优化系统性能、解决系统问题...
在Windows操作系统中,多线程编程是一种常见的编程模式,它允许多个执行单元(线程)在单个进程中并发运行,从而提高程序的执行效率和响应性。在本篇文章中,我们将深入探讨Windows多线程编程的核心概念、实现方法...
操作系统设计是计算机科学中的核心领域,它涉及到系统资源的管理和调度,使得多个程序可以并发执行。在本项目中,我们关注的是多线程同步模拟,这是操作系统设计中的一个关键概念,尤其是在C++环境下,利用MFC...
C语言本身并不直接支持多线程,但可以通过库函数如POSIX的pthread库或Windows API中的CreateThread函数来实现。TURBO C编译器虽然古老,但依然可以用来编写多线程程序,不过可能需要额外的库支持。在OSTcb.txt这个...
Windows操作系统原理是计算机科学中的重要组成部分,它涵盖了操作系统的核心概念、设计原则以及在Windows环境下的具体实现。这个课件深入探讨了Windows操作系统的工作方式,帮助学习者理解其背后的复杂机制。以下是...
Windows操作系统提供了丰富的线程编程接口,使得开发者能够高效地管理和利用多核处理器的优势。本节将主要介绍Windows线程编程的主要API以及一些基本的编程示例。 一、Windows线程编程API 1. **CreateThread()**: ...
在Windows操作系统中,每个线程都有自己的执行上下文,包括程序计数器、寄存器和堆栈,使得它们能够独立执行任务。 Windows操作系统提供了丰富的API(应用程序接口)来支持多线程编程。例如,可以使用`CreateThread...
操作系统中的多线程技术是一种允许程序并发执行的机制,它允许多个线程在单个进程中同时运行。这种技术在现代计算机系统中被广泛应用,特别是在需要高性能和高响应性的应用程序中,例如图形用户界面、服务器处理和...
在本实验中,我们将探讨如何使用C++在Windows操作系统中编写多线程同步程序。首先,我们要理解Windows程序设计的基本思想,尤其是基于消息的程序设计方法。在Windows编程中,程序通常通过处理由操作系统发送的消息来...