Linux下一个进程可以开多少线程

Posted BuguTian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下一个进程可以开多少线程相关的知识,希望对你有一定的参考价值。

这个问题,整理了一下网上的资料,结果如下:

一、ulimit -n可以查看一个进程最多可以打开多少文件描述符数;

二、一个进程最多可以产生多少线程,可用如下的方法:

  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中限制了系统的最大线程数

   查看公司的服务器:

   限制数为:  2^19
   实际测试结果:2^16

三、最靠谱的方法还是自己写程序测试的结果

#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);
}

  编译命令如下:

g++ main.cpp -o main -lpthread

  执行结果:

[[email protected]]# ./main
i = 32747

  

 

以上是关于Linux下一个进程可以开多少线程的主要内容,如果未能解决你的问题,请参考以下文章

多个请求是多线程吗

linux 最多支持多少个线程

linux下查看一个进程有多少个线程

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

#2021年底大盘点#我的服务应该开多少个进程多少个线程?

Linux性能学习(2.2):内存_进程线程内存分配机制探究