如何查看我的装的linux操作系统单个进程最多能创建多少个线程

2024-11-02 20:24:22
推荐回答(1个)
回答1:

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