Chinaunix首页 | 论坛 | 博客
  • 博客访问: 258592
  • 博文数量: 52
  • 博客积分: 1379
  • 博客等级: 大尉
  • 技术积分: 525
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-18 17:34
文章分类

全部博文(52)

文章存档

2011年(48)

2010年(4)

分类: LINUX

2011-03-10 11:48:00

问题: 为什么只能建300来个线程
因为线程栈默认8M 3G用户空间刚好够300多个

线程栈的大小__default_stacksize在初始化时被设置为rlimit的大小
ulimit -s
8192

如果没有限制,__default_stacksize = #define ARCH_STACK_DEFAULT_SIZE    (2 * 1024 * 1024)

所以最简单减小线程栈的方式就是ulimit 更改父shell的值(如果程序无法修改,否则attr可用)
在程序中setrlimit是不行的,因为在很早的时候(当然肯定是main之前)__default_stacksize就会被设置

阅读(2166) | 评论(0) | 转发(0) |
0

上一篇:当乔布斯遇见比尔盖茨...

下一篇:clone

给主人留下些什么吧!~~