linux 进程数量 32 64,64位linux下单个进程的最大线程数

本文探讨了64位系统中线程数量的限制,并非完全没有限制,而是受到多个系统参数的影响,如pid_max、threads-max、max_map_count以及overcommit_memory和overcommit_ratio等。通过实例代码展示了如何创建线程,直到达到系统限制。
摘要由CSDN通过智能技术生成

32位系统下的单个进程的最大线程数受限于3G的虚拟内存限制,所以能起的线程最多就1024*3/8=384个。

那么64位的系统是不是就没有限制了呢?实际上64位系统的情况就比较复杂了,有很多限制条件。。

比如/proc/sys/kernel/pid_max 设置的 pid的最大值(默认32768); /proc/sys/kernel/threads-max 设置的最大线程数(默认32128)。

/proc/sys/vm/max_map_count(默认65530)设置最大的内存映射区域数量。

另外就是 /proc/sys/vm/overcommit_memory 和/proc/sys/vm/overcommit_ratio 也有些关系。

max_thread.c

[c]

#include

#include

#include

#define MAX 40000

void *sleep1k(void){

sleep(1000);

return NULL;

}

int main()

{

int i = 0;

pthread_t thread;

while (1) {

if (pthread_create(&thread, NULL,(void *)sleep1k, NULL) != 0){

break;

}

i ++;

if(i >=MAX) {

break;

}

}

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

getchar();

return 0;

}

[/c]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值