电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
问答
linux最大线程数分析
已解决
73482
个问题
已帮助
5993
位优秀工程师
linux最大线程数分析
d7444a6055f9dc4b
2019-03-12
浏览量:777
这两天一直被这个问题困扰,现在终于想明白了
有3种可能限制
1,线程的本质是一个进程,所以 ulimit 中的 processes 决定了上限,我的是7000多
2,我用的是Linux64位,网上有分析说每个进程的在物理内存中的8字节64位中最终可以寻址到256t的虚拟内存,反正测试时确定虚拟内存绝对不止4g,我指定几百m的stack大小都是和8m一样跑出4700多个线程,单个进程虚拟内存用尽后才会出现只能create出几十个线程的情况
3给单个线程分配的stack大小,决定了在在这个线程里定义的局部变量等所占空间的大小,原来一个char buf【size】就可以耗尽stack,出错退出可惜我基础不扎实,malloc到堆不行,读文件进来到stack,本质也是读了些8字节的指针进来,搞了我久
4,物理内存的大小,多线程用尽物理内存,出现段错误,无法再创建线程
自己的推测,有不对的地方大家多多指点
显示全部
其他
关注问题
写回答
0
0
收起
我来回答
上传资料:
选择文件
文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
chen0000009
Linux线程还是受限于分配的内存,一般每个线程都会有一定的工作堆栈,这个堆栈分配达到上限就不能再分配了
发布于
2019-03-14
举报
评论 0
0
0
其他答案
数量:
4
xdsnet
/proc/sys/kernel/pid_max 是线程数理论上限值吧
发布于
2019-03-13
举报
评论 0
0
0
donatello
我觉得受两个上限影响,第一是物理内存大小,这个是物理上限值永远无法超越,然后第二个上限就是系统可以允许的,在不发生调度紊乱前提下的最大线程上限。
发布于
2019-03-13
举报
评论 0
0
0
我对面的武器
很大程度上是受内存的限制的了,系统中所限制的基本上是达不到的
发布于
2019-03-14
举报
评论 0
0
0
喵不是好兔纸
这个是跟你的内存空间有关系的,一般都是在系统中受到对应的限制
发布于
2019-03-18
举报
评论 0
0
0
相关问题
问题达人
换一批
文章
知识经验换现金
换一批
linux最大线程数分析
写回答
关注问题
×
我要举报该内容,理由是:
内容质量差:
内容太水、伸手党
垃圾广告信息:
广告、招聘、推广、测试内容等
偏离问答主题:
与技术无关、讨论类
与社区已有内容重复:
违规内容:
色情、暴力、血腥、敏感信息等
不友善内容:
人事攻击、挑衅辱骂、恶意行为
以上选项都不是: