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,物理内存的大小,多线程用尽物理内存,出现段错误,无法再创建线程

给大家推荐一些有用的资料吧

linux基础

http://www.makeru.com.cn/course/details/2058?s=143160

快速上手linux

http://www.makeru.com.cn/live/1758_310.html?s=143160

Linux网络经典案例

http://www.makeru.com.cn/live/3485_1630.html?s=143160

linux高级

http://www.makeru.com.cn/course/details/2478?s=143160

linux多线程编程

http://www.makeru.com.cn/course/details/1937?s=143160

循环链表及线性表的应用(系列“点标题下的开始学习就可以看了”)

http://www.makeru.com.cn/course/details/1902?s=143160

或者可以加入咱们的大神群进入更深入的探讨( 858330377 

posted on 2020-05-29 16:24  李简  阅读(408)  评论(0)    收藏  举报