zoukankan      html  css  js  c++  java
  • 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
    ", i);
    }
    

      编译命令如下:

    g++ main.cpp -o main -lpthread
    

      执行结果:

    [root@localhost]# ./main
    i = 32747
    

      

  • 相关阅读:
    HTML5: HTML5 Video(视频)
    HTML5: HTML5 Geolocation(地理定位)
    HTML5: HTML5 拖放
    HTML5: HTML5 MathML
    HTML5: HTML5 内联 SVG
    HTML5: HTML5 Canvas
    HTML5: HTML5 新元素
    HTML5: 浏览器支持
    HTML5: HTML5 介绍
    HTML5: 目录
  • 原文地址:https://www.cnblogs.com/bugutian/p/9722240.html
Copyright © 2011-2022 走看看