精华内容
下载资源
问答
  • 线程:程序执行的最小单元,是进程中的一个实体用来执行程序,一个进程个线程。 既然如此,我们可以想象,一个系统中的进程数量肯定是上限的,不然系统资源就会不够用了,同样的道理,一个进程中的线程...

    说明

    进程:系统分配资源的载体,是程序运行的实例;

    线程:程序执行的最小单元,是进程中的一个实体用来执行程序,一个进程中有多个线程。

     

    既然如此,我们可以想象,一个系统中的进程数量肯定是有上限的,不然系统资源就会不够用了,同样的道理,一个进程中的线程资源也是有上限的。

     

     

    Linux中最多可以有多少个进程?

    一.Linux中有一个命令可以帮助我们查看系统中的进程上限

    [pigff@izbp13yd4r85qvk53t04mbz ~]$ ulimit -u
    4096


    这属于软限制,是可以改变的。也就是说在我的机器上最多可以有4096个进程,但是我可以通过改变这个参数的值来修改对于进程数量的软限制,比如说用下面的命令将软限制改到5120。


     ulimit -u 5120


     二.我们用pid_t来表示一个进程的pid,因此能表示的进程的范围一定不会超过pid_t类型的大小


    [pigff@izbp13yd4r85qvk53t04mbz ~]$ cat /proc/sys/kernel/pid_max
    32768


    pid_t实际上就是一个short类型变量,当然这里能表示的范围只是进程id最多表示到这么多,这只是一个理论值,实际上,由于内存等系统资源的限制,根本不会同时有这么多的进程存在。

     

    一个进程中最多可以有多少个线程?

     

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

     

    Linux中线程占用内存中,取决于分配给线程的调用栈大小,可以用ulimit -s命令来查看大小(stack size (kbytes,-s)表示线程堆栈大小,一般常见的有10M或者是8M)。我们还知道,一个进程的虚拟内存是4G,在Linux32位平台下,内核分走了1G,留给用户用的只有3G,于是我们可以想到,创建一个线程占有了10M内存,总共有3G内存可以使用。于是可想而知,3G/10M=最大线程数,最多可以创建差不多300个左右的线程。 但实际会比这个数小一点,因为程序本身占内存,还有些管理线程。64位系统的不一样,64系统的线程数并不是简单是用 内存/线程栈 ,

    因此,进程最多可以创建的线程数是根据分配给调用栈的大小,以及操作系统(32位和64位不同)共同决定的。
     

     

     

     

     

     

     

      可以使用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

     执行结果:

    [root@localhost]# ./main

    i = 32747

    原文:

    https://blog.csdn.net/lvyibin890/article/details/82255047

    https://www.cnblogs.com/bugutian/p/9722240.html

    展开全文
  • 也知道线程的概念,它是程序执行的最小单元,是进程中的一个实体用来执行程序,一个进程个线程。 既然如此,我们可以想象,一个系统中的进程数量肯定是上限的,不然系统资源就会不够用了,同样的道理,一个...

    我们都知道进程的概念,它是CPU分配资源的载体,是程序运行的实例;也知道线程的概念,它是程序执行的最小单元,是进程中的一个实体用来执行程序,一个进程中有多个线程。

    既然如此,我们可以想象,一个系统中的进程数量肯定是有上限的,不然系统资源就会不够用了,同样的道理,一个进程中的线程资源也是有上限的。那进程和线程的上限到底是多大呢?

    Linux中最多可以有多少个进程?

    一.Linux中有一个命令可以帮助我们查看系统中的进程上限

    [pigff@izbp13yd4r85qvk53t04mbz ~]$ ulimit -u
    4096

    这属于软限制,是可以改变的。也就是说在我的机器上最多可以有4096个进程,但是我可以通过改变这个参数的值来修改对于进程数量的软限制,比如说用下面的命令将软限制改到5120。

     ulimit -u 5120

     二.我们用pid_t来表示一个进程的pid,因此能表示的进程的范围一定不会超过pid_t类型的大小

    [pigff@izbp13yd4r85qvk53t04mbz ~]$ cat /proc/sys/kernel/pid_max
    32768

    pid_t实际上就是一个short类型变量,当然这里能表示的范围只是进程id最多表示到这么多,这只是一个理论值,实际上,由于内存等系统资源的限制,根本不会同时有这么多的进程存在。

    一个进程中最多可以有多少个线程?

    在上一篇文章Linux中线程占用内存中,我们知道了创建一个线程会占用多少内存,这取决于分配给线程的调用栈大小,可以用ulimit -s命令来查看大小(一般常见的有10M或者是8M)。我们还知道,一个进程的虚拟内存是4G,在Linux32位平台下,内核分走了1G,留给用户用的只有3G,于是我们可以想到,创建一个线程占有了10M内存,总共有3G内存可以使用。于是可想而知,最多可以创建差不多300个左右的线程。

    因此,进程最多可以创建的线程数是根据分配给调用栈的大小,以及操作系统(32位和64位不同)共同决定的

    展开全文
  • Windows平台一个进程可以CreateThread开多少个线程 微软官方手册MSDN给出的是 进程可以创建的线程数受可用虚拟内存的限制。 默认情况下,每个线程都一兆的堆栈空间。 因此,最多可以创建2,048个线程。 如果减小...

    Windows平台一个进程可以CreateThread开多少个线程

    微软官方手册MSDN给出的是

    进程可以创建的线程数受可用虚拟内存的限制。

    默认情况下,每个线程都有 1M 的堆栈空间。
    因此,最多可以创建2,048个线程。
    如果减小默认堆栈大小,则可以创建更多线程。
    但是,如果为每个处理器创建一个线程并构建应用程序为其维护上下文信息的请求队列,则您的应用程序将具有更好的性能。
    在处理下一个队列中的请求之前,线程将处理队列中的所有请求。
    在这里插入图片描述

    附上微软链接: https://docs.microsoft.com/zh-cn/windows/win32/api/processthreadsapi/nf-processthreadsapi-createthread

    展开全文
  • 以下是对在linux环境下一个进程最多能有多少个线程进行了介绍,需要的朋友可以过来参考下
  • 一个进程最多创建多少个线程

    千次阅读 2018-10-10 23:02:38
    最近,在做一个关于聊天服务器的项目,其中遇到了一个问题,那就是一个进程可以产生多少个线程呢? 开始各种想象,会和不同平台,不同系统相关,网上很多大佬说是1024个,也256个。 与其无端猜测,不如动手测试...

    最近,在做一个关于聊天服务器的项目,其中遇到了一个问题,那就是一个进程可以产生多少个线程呢?

    开始各种想象,会和不同平台,不同系统相关,网上很多大佬说是1024个,也有256个。

    与其无端猜测,不如动手测试一下。在Linux32位平台,进行测试。

      1 #include <stdio.h>
      2 #include <unistd.h>
      3 #include <iostream>
      4 #include <stdlib.h>
      5 #include <string.h>
      6 #include <pthread.h>
      7 #include <errno.h>
      8 
      9 using namespace std;
     10 //测试一个进程可以启动多少个线程???
     11 
     12 void *thread_function(void *arg);
     13 
     14 char message[] = "Hello world";
     15 
     16 int main()
     17 {
     18     int res;
     19     pthread_t a_thread;
     20     int i = 0;
     21     
     22     while( 1 )
     23     {
     24         //创建线程
     25         res = pthread_create(&a_thread, NULL, thread_function, (void *)messa    ge);
     26         i++;
     27         if( res != 0)
     28         {
     29             cout<<"线程个数:"<<i<<endl;
     30             perror("Thread creation failed;errno:");
     31             return 0;
     32         }
     33     }
     34 }
     35 
     36 void *thread_function(void *arg)
     37 {
     38     printf("thread_function is runing.Argument is %s\n", (char*)arg);
     39 }
    

    可能看着会有些粗糙,但是多次测试下来,可以产生304左右个线程。

    32位Linux平台下,虚拟内存空间4G,用户空间占3G,内核空间1G,每个线程的栈大小10240,为10M,3072/10=307。除去主线程,下来接近测试数据。

    通过命令  ulimit -s或者ulimit -a 可以查看默认栈大小

     

    当然你可以通过命令ulimit -s+参数,临时修改线程栈大小

    线程栈修改之后,线程个数增加了。

    --------------------- 作者:渔舟唱晚_hanpan 来源:CSDN 原文:https://blog.csdn.net/hhhanpan/article/details/78192653?utm_source=copy 版权声明:本文为博主原创文章,转载请附上博文链接!

    展开全文
  • 进程与线程的关系 简单复习一下:一个”进程“代表中计算机中实际跑起来的一个程序,在现代操作系统...因此一个进程至少得个线程,我们把这个线程称之为”主线程“,也就是说,一个进程至少要一个主线程。 ...
  • Linux下一个进程究竟会有多少个线程

    千次阅读 2017-10-10 14:53:46
    进程可以启动最大线程个
  • 一个进程可以创建多少线程

    千次阅读 2009-04-16 17:09:00
    以前一直没有试过也没怎么想过这问题,模糊觉得和系统性能与关系,前2天写小程序试了一下,如下#include "stdafx.h"#include "stdio.h"#include "stdlib.h"#include "windows.h"#include "process.h"unsigned ...
  • windows 下一个进程能开多少个线程

    千次阅读 2015-08-12 17:39:19
    进程里面创建线程数收到总线的...当设置为512k时,可以开2244个线程,设置为256k时,可以开3122个线程,所以在我们做sock通信服务器时,需要注意,如果一个客户端 connect进来,就用一个线程对它进程处理的话,服务端
  • 多少个线程? 进程是CPU分配资源的基本单位,是程序运行的实例;线程是程序执行的最小单元,是进程中的一个实体用来执行程序,一个进程多个线程。 一个系统中的进程数量肯定是上限的,不然系统资源就会不够...
  • ps -ef f 用树形显示进程和线程,比如说我想找到proftp现在有多少个进程/线程可以用 $ ps -ef f | grep proftpd nobody 23117 1 0 Dec23 ? S 0:00 proftpd: (accepting con
  • <br />转:http://hi.baidu.com/willor/blog/item/fd58e6c5ea840ca38326ac6a.html<br />ps -ef f  用树形显示进程和线程,比如说我想找到proftp现在有多少个进程/线程可以用  $ ps -ef f | grep...
  • 进程和线程我们打开我们的计算机就会看到进程和线程那什么是进程什么是线程我的理解是...我举个例子,比如打开qq,就是一个线程很多个qq上号就是进程python线程和进程的使用现在讲python线程和进程的使用在Py...
  • 经测试 若线程退出的情况下 可以无数个线程 同时运行的话 情况如下
  • 如果使用VS,链接程序开关/SACK或者/F可以设置线程堆栈大小,默认分配一个线程的堆栈大小是1MB,当CreateThread参数的StackSize大小与链接程序设置的不一致时,采用的方法是谁大用谁的,所以用4KB修改当然不会改变...
  • 其实关于爬虫并没有明确多少数量开线程,因为这个是无穷的,随着...一起来看下吧~1、爬虫环境Pycharm python3.7.02、进程和线程的关系:一个线程只能属于一个进程,而一个进程可以有个线程,但至少有一个线程。资...
  • 可以查看某一个pid(进程的唯一标识)的所有线程。 -H表示显示线程 -p表示pid 2. 使用ps命令 使用ps查看计算机的进程线程的详细情况 ps -T -p <pid> 上面的代码显示指定pid进程下所有线程的内容 -T表示显示...
  • 问题:我正在运行一个程序,它在运行时会派生出多个线程。我想知道程序在运行时会有多少线程。在 Linux 中检查进程的线程数最简单的方法是什么?如果你想看到 Linux 中每个进程的线程数,有以下两种方法可以做到这...
  • 问题: 我正在运行一个程序,它在运行时会派生出多个线程。我想知道程序在运行时会有多少线程。在 Linux 中检查进程的线程数最简单的方法是什么? 如果你想看到 Linux 中每个进程的线程数,有以下几种方法可以做到这...
  • 源/sina 作者/miracle1919McGovernTheory在StackOverflow提了这样一个问题:Java虚拟机最多支持多少个线程?跟虚拟机开发商有关么?跟操作系统呢?还有其他的因素吗?Eddie的回答:这取决于你使用的CPU,操作系统,...
  • 一个进程只能一个线程池,现在还是这样吗? 一个线程池的最大线程数,是由哪些因素来决定的? 以前听说一个线程池最大是1000个线程,现在最多可以多少个线程
  • Linux下创建一个线程占用多少内存

    千次阅读 2018-09-08 12:57:34
    因此,我们知道,一个进程被创建时将被分配4G的虚拟内存。事实上,并不是每次都会用完这4G内存的,下面的例子可以看到。 #include &lt;stdio.h&gt; #include &lt;unistd.h&gt; int main(){ ...
  • os模块中大量的进程相关操作,其中可以启动进程的函数system, fork, exec*, spawn*, popen*,下面详细叙述: system方法: 函数签名:os.system(command) 说明:同步调用的,即子进程执行完
  • 进程 1、进程之间不共享任何状态 2、进程的调度由操作系统完成 3、每个进程都自己独立的内存空间 4、进程间通讯主要是通过信号传递的方式来实现的,实现方式多种,信号量、管道、...2、一个进程可以拥有多个线程
  • 可是,不知道大家没有这么一个想法,你的电脑究竟能执行多少线程多少进程呢?一般来说,每个人的电脑运行的进程不算多,如果大家用的是ubuntu电脑或者mac电脑,可以通过这个命令来查看,ubuntu> ps aux | wc -
  • 先来对比进程和线程可以拥有自己的独立资源切换消耗是资源分配单位是执行单元进程可以消耗大是否线程不可以消耗小否是进程是资源容器,我们只会说一个进程占用了多少内存,而从来不会说一个线程占用了多少内存。...
  • 进程线程

    2018-09-15 21:18:35
    进程中若干个线程 逻辑内存在进程中的,其实是指的是寻址空间,说明的是你拥有多少的逻辑内存可用,而不是说它拥有那么多物理内存 进程和进程不能共享内存,线程是可以的,每个进程的内存都是互相独立的 线程间...

空空如也

空空如也

1 2 3 4 5 ... 17
收藏数 322
精华内容 128
关键字:

一个进程可以有多少个线程