当前位置:  开发笔记 > 运维 > 正文

为什么pthread_create()会因只有2个线程处于活动状态而失败?

如何解决《为什么pthread_create()会因只有2个线程处于活动状态而失败?》经验,为你挑选了1个好方法。

我在第一次尝试使用C中的线程时遇到了一些麻烦.我正在尝试(现在)编写一个非常简单的服务器程序,该程序接受套接字连接并启动一个新线程来处理它.它似乎工作正常,除了在pthread_create()失败并且使用EAGAIN代码之前它只会创建大约300个线程(303,有时是304),这意味着:

"系统缺少创建另一个线程所需的资源,或者会超出系统对进程中线程总数的限制{PTHREAD_THREADS_MAX}."

不是 303个线程同时 - 每个线程退出,由gdb确认.每次调用进程请求函数时,都会运行两个线程.

所以它意味着"系统缺乏必要的资源".我的问题是(而且可能有点愚蠢) - 这些资源是什么?据推测,这是我的程序中的内存泄漏(当然可能,甚至可能),但我认为即使如此,考虑到程序的其余部分做得很少,它可以管理超过300个.

我怎样才能知道我的程序可用多少内存来确认它已经用完了?有足够的内存和交换免费,所以可能是操作系统(Linux)强加的人为限制.

谢谢



1> Miles..:

如果您没有使用该属性创建线程PTHREAD_CREATE_DETACHED(或将其与之分离pthread_detach(),则可能需要pthread_join()在退出后调用每个创建的线程以释放与其关联的资源.

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有