linux中一个进程的最大线程数量是多少

linux中一个进程的最大线程数量是多少,第1张

linux 系统中单个进程的最大线程数有其最大的限制 PTHREAD_THREADS_MAX

这个限制可以在 /usr/include/bits/local_lim.h 中查看关于Linux命令的介绍,看看《linux就该这么学》,具体关于这一章地址3w(dot)linuxprobe/chapter-02(dot)html

对 linuxthreads 这个值一般是 1024,对于 nptl 则没有硬性的限制,仅仅受限于系统的资源

这个系统的资源主要就是线程的 stack 所占用的内存,用 ulimit -s 可以查看默认的线程栈大小,一般情况下,这个值是 8M

32为linux系统最大内存地址4G,0-3GB的给用户进程(User Space)使用,3-4GB给内核使用

stack size (kbytes, -s) 10240表示线程堆栈大小

3G/10M=最大线程数,但实际会比这个数小一点,因为程序本身占内存,还有些管理线程

可以使用ulimit -s来设置stack size,设置的小一点开辟的线程就多。

同时/usr/include/bits/local_lim.h中的PTHREAD_THREADS_MAX限制了进程的最大线程数

/proc/sys/kernel/threads-max中限制了系统的最大线程数

你自己写个简单的代码就能测试出自己系统最大可以开多少线程

#include <unistd.h>

#include <stdlib.h>

#include <pthread.h>

#include <stdio.h>

void *foo(void *param)

{

}

int main()

{

int i = 0

pthread_t thread

while(1)

{

if(pthread_create(&thread,NULL,foo,NULL) != 0)

break

i++

}

printf("i=%d\n",i)

return 0

}

以下是对在linux环境下一个进程最多能有多少个线程进行了介绍,需要的朋友可以过来参考下 默认情况下: 主线程+辅助线程 +<253个自己的线程<=255 含主线程和一个辅助线程,最多255个,即你自己只能生成253个线程。 据说可以设置线程数目: 据说是可以设置的,但本人还没有验证!不知道可否。 在你的shell中键入limit命令,里面有descriptor的数目,就是你的进程可以创建的最大线程数目。可以通过修改内核文件更改该数目。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/9027865.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-24
下一篇 2023-04-24

发表评论

登录后才能评论

评论列表(0条)

保存