免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5374 | 回复: 8
打印 上一主题 下一主题

linux下单进程只能建立254个线程限制!~!!!!!??? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-05-16 17:24 |只看该作者 |倒序浏览
代码如下:

  当t<256时就create pthread error,大家看看................

  }
for(t=1;t<255;t++)
    {
   ret=pthread_create(&id[1],NULL,(void *) synflood,(void *)&sin);
    if(ret!=0){
            printf ("create pthread error!\n");
            exit (1);
              }     
    }

论坛徽章:
0
2 [报告]
发表于 2006-05-16 17:33 |只看该作者
线程好像确实有一个最大限制
===============================================
线程的上限是由于每个线程都要保留进程内的地址空间作为栈空间,这个空间是有限制的。
如果不想重新编译内核的话,可以通过缩小线程堆栈的尺寸来扩大可创建线程的数目。应当是pthread_attr_setstacksize吧。你可以做个实验。在创建线程前,是用pthread_attr_getstacksize()获得线程栈尺寸,然后缩小,看一下是否能创建更多的线程。不过缩小栈尺寸,就意味着你的局部变量的大小和你的函数调用的层次都会有影响。

或者你可以用cat /proc/sys/kernel/threads-max看一下系统支持的线程数目,然后到内核版去问一下,如何修改系统参数增大线程数目。

我在处理该问题的时候发现最大线程数只能到254,无法超过这个数量,有什么办法可以解决?
实际编程中,不会在单一进程中用到这么多的线程,如果要用这么多的线程的话,就应当考虑修改应用程序的结构了,可以考虑采取多进程、多线程的结构。
===================================================
等号里这话是renstone921以前说的

[ 本帖最后由 lishengxu 于 2006-5-16 17:35 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2006-05-16 17:44 |只看该作者
谢谢楼上详细解释,目前主要是在同一台机器上java线程(tomcat)最高达到800多了,我就想知道到底linux一个进程能达到多少

我机器上threads-max显示为:
[root@test root]# cat /proc/sys/kernel/threads-max
14336

[ 本帖最后由 Cbook 于 2006-5-16 17:45 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2006-05-17 22:22 |只看该作者
难道大家都没碰到过这种问题啊~~~!!!,请版主帮忙

论坛徽章:
0
5 [报告]
发表于 2006-05-18 09:00 |只看该作者
调用
pthread_attr_setstacksize
设置线程最小占用的栈的大小,在我的fedora4系统上它默认是10M,
但我把它设为 1M, 依然可以跑得很好,而且并发可以达到3000线程以上.

论坛徽章:
0
6 [报告]
发表于 2006-05-18 11:48 |只看该作者
LZ太无聊了,线程数当然有限制,在配制文件中。

论坛徽章:
0
7 [报告]
发表于 2006-05-18 12:17 |只看该作者
第一, 应该必要的时候detach一个线程;
第二,调整ulimit -s。

论坛徽章:
0
8 [报告]
发表于 2006-05-18 12:32 |只看该作者
pthread_create 和系统OS有关吗?

论坛徽章:
0
9 [报告]
发表于 2006-05-19 14:03 |只看该作者
调整线程占用的栈空间
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP