ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 一个进程(Process)最多可以生成多少个线程(Thread)

一个进程(Process)最多可以生成多少个线程(Thread)

原创 Linux操作系统 作者:fangqm 时间:2011-04-02 15:43:20 0 删除 编辑

1.进程中创建线程的限制

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

2.如何突破2000个限制?
    你也可以通过连接时修改默认栈大小,将其改的比较小,这样就可以多开一些线程。 如将默认栈的大小改成512K,这样理论上最多就可以开4096个线程。
    即使物理内存再大,一个进程中可以起的线程总要受到2GB这个内存空间的限制。比方说你的机器装了64GB物理内存,但每个进程的内存空间还是4GB,其中用户态可用的还是2GB。

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


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

服务器端程序设计

如果你的服务器端程序设计成:来一个client连接请求则创建一个线程,那么就会存在2000个限制(在硬件内存和CPU个数一定的情况下)。建议如下:

核心的思想是:使用异步I/O,和一个线程处理多个客户请求!!

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23109131/viewspace-691574/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-03-24

  • 博文量
    298
  • 访问量
    729465