Linux中每个进程的最大线程数

2023-11-23

我编写了一个简单的程序来计算Linux(Centos 5)中一个进程可以拥有的最大线程数。这是代码:

int main()
{
    pthread_t thrd[400];
    for(int i=0;i<400;i++)
    {
        int err=pthread_create(&thrd[i],NULL,thread,(void*)i);
        if(err!=0)
            cout << "thread creation failed: " << i <<" error code: " << err << endl;
    }
    return 0;
}

void * thread(void* i)
{
    sleep(100);//make the thread still alive
    return 0;
}

我发现线程的最大数量只有 300!?如果我需要更多怎么办? 我必须提到 pthread_create 返回 12 作为错误代码。

之前谢谢


Linux 的线程限制并且可以通过将所需的限制写入来修改运行时/proc/sys/kernel/threads-max。默认值是根据可用系统内存计算的。除了这个限制之外,还有另一个限制:/proc/sys/vm/max_map_count这限制了最大映射段,并且至少最近的内核将为每个线程映射内存。如果您达到了该限制,那么大幅增加该限制应该是安全的。

但是,那您遇到的限制是缺乏虚拟内存在32位操作系统中。如果你的硬件支持,安装 64 位 Linux 就可以了。我可以轻松启动 30000 个线程,堆栈大小为 8MB。该系统有一个 Core 2 Duo + 8 GB 系统内存(我同时使用 5 GB 用于其他东西),并且运行内核为 2.6.32 的 64 位 Ubuntu。请注意,必须允许内存过量使用 (/proc/sys/vm/overcommit_memory),否则系统将需要至少 240 GB 的可提交内存(实际内存和交换空间的总和)。

如果您需要大量线程并且无法使用 64 位系统,您唯一的选择是最小化每个线程的内存使用量以节省虚拟内存。首先请求尽可能少的堆栈。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux中每个进程的最大线程数 的相关文章

  • 如何使用 xterm.js 创建基于 Web 的终端以 ssh 进入本地网络上的系统

    我偶然发现了这个很棒的图书馆xterm js https xtermjs org 这也是 Visual Studio Code 终端的基础 我有一个非常普遍的问题 我想通过基于网络的终端 不在网络中 可能位于 aws 服务器上 访问本地网络
  • 应用程序无缘无故地被杀死。怀疑 BSS 高。如何调试呢?

    我已经在CentOs6 6中成功运行我的应用程序 最近 硬件 主板和内存 更新了 我的应用程序现在毫无理由地被杀死 root localhost PktBlaster PktBlaster Killed 文件和 ldd 输出 root lo
  • 如何禁用 GNOME 桌面屏幕锁定? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何阻止 GNOME 桌面在几分钟空闲时间后锁定屏幕 我已经尝试过官方手册了在红帽 https access redhat com doc
  • Jenkins中找不到环境变量

    我想在詹金斯中设置很多变量 我试过把它们放进去 bashrc bash profile and profile of the jenkins用户 但 Jenkins 在构建发生时找不到它们 唯一有效的方法是将所有环境变量放入Jenkinsf
  • 如何在 shell 脚本中并行运行多个实例以提高时间效率[重复]

    这个问题在这里已经有答案了 我正在使用 shell 脚本 它读取 16000 行的输入文件 运行该脚本需要8个多小时 我需要减少它 所以我将其划分为 8 个实例并读取数据 其中我使用 for 循环迭代 8 个文件 并在其中使用 while
  • 如何查明CONFIG_FANOTIFY_ACCESS_PERMISSIONS是否启用?

    我想利用fanotify 7 http man7 org linux man pages man7 fanotify 7 html我遇到的问题是在某些内核上CONFIG FANOTIFY ACCESS PERMISSIONS不起作用 虽然C
  • 我可以从命令行打印 html 文件(带有图像、css)吗?

    我想从脚本中打印带有图像的样式化 html 页面 谁能建议一个开源解决方案 我使用的是 Linux Ubuntu 8 04 但也对其他操作系统的解决方案感兴趣 你可以给html2ps http user it uu se jan html2
  • Linux中的定时器类

    我需要一个计时器来以相对较低的分辨率执行回调 在 Linux 中实现此类 C 计时器类的最佳方法是什么 有我可以使用的库吗 如果您在框架 Glib Qt Wx 内编写 那么您已经拥有一个具有定时回调功能的事件循环 我认为情况并非如此 如果您
  • chown:不允许操作

    我有问题 我需要通过 php 脚本为系统中的不同用户设置文件所有者权限 所以我通过以下命令执行此操作 其中 1002 是系统的用户 ID file put contents filename content system chown 100
  • Android 时钟滴答数 [赫兹]

    关于 proc pid stat 中应用程序的总 CPU 使用率 https stackoverflow com questions 16726779 total cpu usage of an application from proc
  • 所有平台上的java

    如果您想用 java 为 Windows Mac 和 Linux 编写桌面应用程序 那么所有这些代码都相同吗 您只需更改 GUI 即可使 Windows 应用程序更像 Windows 等等 如果不深入细节 它是如何工作的 Java 的卖点之
  • 如何有效截断文件头?

    大家都知道truncate file size 函数 通过截断文件尾部将文件大小更改为给定大小 但是如何做同样的事情 只截断文件的尾部和头部呢 通常 您必须重写整个文件 最简单的方法是跳过前几个字节 将其他所有内容复制到临时文件中 并在完成
  • 如何使用GDB修改内存内容?

    我知道我们可以使用几个命令来访问和读取内存 例如 print p x 但是如何更改任何特定位置的内存内容 在 GDB 中调试时 最简单的是设置程序变量 参见GDB 分配 http sourceware org gdb current onl
  • 如何在Linux内核源代码中打印IP地址或MAC地址

    我必须通过修改 Linux 内核源代码来稍微改变 TCP 拥塞控制算法 但为了检查结果是否正确 我需要记录 MAC 或 IP 地址信息 我使用 PRINTK 函数来打印内核消息 但我感觉很难打印出主机的MAC IP地址 printk pM
  • Linux:在文件保存时触发 Shell 命令

    我想在修改文件时自动触发 shell 命令 我认为这可以通过注册 inotify 挂钩并调用来在代码中完成system 但是是否有更高级别的 bash 命令可以完成此任务 尝试 inotify 工具 我在复制链接时遇到问题 抱歉 但 Git
  • 在 Linux 上使用多处理时,TKinter 窗口不会出现

    我想生成另一个进程来异步显示错误消息 同时应用程序的其余部分继续 我正在使用multiprocessingPython 2 6 中的模块来创建进程 我试图用以下命令显示窗口TKinter 这段代码在Windows上运行良好 但在Linux上
  • 有谁知道在哪里定义硬件、版本和序列号。 /proc/cpuinfo 的字段?

    我想确保我的 proc cpuinfo 是准确的 目前它输出 Hardware am335xevm Revision 0000 Serial 0000000000000000 我可以在代码中的哪里更改它以给出实际值 这取决于 Linux 的
  • 如何授予 apache 使用 NTFS 分区上的目录的权限?

    我在一台带有 20GB 硬盘的旧机器上运行 Linux Lubutu 12 10 我有一个 1 TB 外部硬盘 上面有一个 NTFS 分区 在该分区上 有一个 www 目录 用于保存我的网页内容 它在启动时自动安装为 media t515
  • ftrace:仅打印trace_printk()的输出

    是否可以只转储trace printk 输出于trace文件 我的意思是过滤掉函数跟踪器 或任何其他跟踪器 中的所有函数 一般来说 您可以在选项目录中关闭选项 sys kernel debug tracing options Use ls显
  • 如何使用 GOPATH 的 Samba 服务器位置?

    我正在尝试将 GOPATH 设置为共享网络文件夹 当我进入 export GOPATH smb path to shared folder I get go GOPATH entry is relative must be absolute

随机推荐

  • C 中的 +(+k--) 表达式

    我在测试中看到这个问题 我们必须告诉以下代码的输出 include
  • asp.net mvc3 基于模型检查单选按钮

    我有一个看似简单的任务 即根据模型的布尔值设置 选中 单选按钮 我的模型 IsSDPDonor 中有一个布尔值 我想将它用于是 否单选按钮 如果 IsSDPDonor 为 true 则应检查 Yes 单选按钮 如果为 false 则应检查
  • Bootstrap Multiselect 获取 HttpPost 上的选定值

    我正在用这个引导多选我的问题是我无法在 ASP Net MVC 上的 HttpPost 上获取所选值 遇到的问题 单击 保存 后 仅显示第一个选定的值 该模型 SOLVED 单击 保存 后 仅显示第一个选定的值 下拉列表 示例 html m
  • 具有不同查询参数的两种 GET 方法

    我们可以创建相同的 GET URI 但具有不同的查询参数吗 例如 我有两个 REST GET URI questions ask type rest questions ask byUser john 现在 REST 服务不会将两个 GET
  • Camel http4 使用 Https 上的基本身份验证下载文件

    我正在尝试从以下位置下载文件Https需要基本身份验证的 url 我正在使用 HTTP4 我正在尝试从网址下载 文件下载后 我需要将其保存到文件夹中 这是我的代码的样子 from xxx to http4 ebc cybersource c
  • 以编程方式在另一个桌面(空间)中打开 NSWindow

    在我的 OSX 项目中 我想要 识别 NSWindow 所在的桌面 公开空间之一 在确定的 Space 中打开 NSWindow 而不仅仅是在当前 Space 上 有没有办法完成这些简单的任务 浏览文档 NSWindowController
  • “void”是函数的有效返回值吗?

    private void SaveMoney string id public void DoSthWithMoney string action string id if action save return SaveMoney stri
  • 在WPF DataGrid中通过列标题获取列索引

    如何获得Column索引或Column DisplayIndex从它的Column Header in WPF DataGrid 我知道Column Header 想要得到column index 你可以用DisplayIndex 请注意
  • 在 netbeans 中为 .dll/.so 文件提供“java.library.path”

    我如何给出路径 dll or sonetbeans 中的文件以使用以下方式加载库 System loadLibrary Foo I read 这在 Netbeans 页面上 但无法帮助我 因为它给出了不满意的链接错误 这是我尝试过的两件事
  • wymeditor 无法保存插入的 iframe

    Wym编辑器 http wymeditor org 总是删除插入的 iframe 的内容 所以我无法将 vimeo 播放器块添加到我的页面 我怎样才能避免它 问候 阿列克谢 扎哈罗夫 Since 2011 年 5 月 31 日 WYMedi
  • Windows 上 MBCS 和 UTF-8 的区别

    我正在阅读有关 Windows 上的字符集和编码的信息 我注意到 Visual Studio 编译器 针对 C 中有两个编译器标志 称为 MBCS 和 UNICODE 它们之间有什么区别 我不明白的是 UTF 8 在概念上与 MBCS 编码
  • 在 HTML5 canvas 元素内移动矩形(像素)区域的最快方法是什么

    我想实现 HTML5 canvas 元素内容的垂直滚动 我不想再次渲染整个内容 相反 我想将整个内容向下 向上移动 并仅渲染已滚动到视图中的区域 我尝试过getImageData and putImageData函数 但在我的测试中它们几乎
  • linux中有类似COM0COM这样的程序吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我在Windows中使用com0com进行程序测试 linux下有没有类似com0com的程序 我知道有 pts ptmx 但我想要的是一个独立的程
  • Google 地球与 Google 地图 API v3 集成了吗?

    我正在尝试将 Google 地球集成到 Google 地图中 我发现它是possible在 v2 中 但我找不到任何关于如何使用 v3 执行此操作的文档 不幸的是 这尚未在 Google Maps API v3 中实现 请参阅相应的tick
  • groupByKey 是否比 reduceByKey 更受青睐

    我总是用reduceByKey当我需要对 RDD 中的数据进行分组时 因为它在打乱数据之前执行映射端缩减 这通常意味着更少的数据被打乱 从而获得更好的性能 即使当map端reduce函数收集了所有值并且没有实际减少数据量时 我仍然使用red
  • 在(据称)高性能代码中使用 GetCurrentMethod

    出于记录目的 我们应用程序中的一些方法包括以下行 Dim Log As ILog GetLog Reflection MethodBase GetCurrentMethod DeclaringType 我对反思有一种可以说是非理性的恐惧 我
  • 如何从java调用C#函数[重复]

    这个问题在这里已经有答案了 我需要从 java 调用 C 函数 为此我创建了以下内容 我创建了一个java头文件Authenticator h 代码如下 include
  • 循环遍历数组并成对输出(每个第二个元素的分隔符)

    我有一个包含匿名元素的数组 元素通过 php 添加到数组中 如下所示 playlist array while databaseloop playlist a title playlist a length echo json encode
  • 通用集合中的记录相等性

    假设您有一条带有重载相等运算符的记录 TSomeRecord record Value String class operator Equal Left Right TSomeRecord Boolean end 实现比较字符串值 如果根据
  • Linux中每个进程的最大线程数

    我编写了一个简单的程序来计算Linux Centos 5 中一个进程可以拥有的最大线程数 这是代码 int main pthread t thrd 400 for int i 0 i lt 400 i int err pthread cre