博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux下一个进程可以开多少线程
阅读量:6157 次
发布时间:2019-06-21

本文共 945 字,大约阅读时间需要 3 分钟。

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

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

  编译命令如下:

g++ main.cpp -o main -lpthread

  执行结果:

[root@localhost]# ./maini = 32747

  

 

转载于:https://www.cnblogs.com/bugutian/p/9722240.html

你可能感兴趣的文章
☆1018
查看>>
oracle 去掉空格
查看>>
6.13心得
查看>>
Runtime类
查看>>
eclipse decompiler
查看>>
记一个搜索网盘资源的网站
查看>>
jdk1.7和jdk1.8的String的getByte方法的差异
查看>>
java父子进程通信
查看>>
Android ADB server didn't ACK * failed to start daemon * 简单有效的解决方案
查看>>
Olap学习笔记
查看>>
Codeforces Round #431 (Div. 1)
查看>>
如何进行数组去重
查看>>
将标题空格替换为 '_' , 并自动复制到剪切板上
查看>>
List Collections sort
查看>>
Mysql -- You can't specify target table 'address' for update in FROM clause
查看>>
使用局部标准差实现图像的局部对比度增强算法。
查看>>
2017-2018-1 20165313 《信息安全系统设计基础》第八周学习总结
查看>>
《代码敲不队》第四次作业:项目需求调研与分析
查看>>
菜鸡互啄队—— 团队合作
查看>>
HttpWebRequest的GetResponse或GetRequestStream偶尔超时 + 总结各种超时死掉的可能和相应的解决办法...
查看>>