我在第一次尝试 C 中的线程时遇到了一些麻烦。我正在尝试(现在)编写一个非常简单的服务器程序,该程序接受套接字连接并启动一个新线程来处理它。它似乎工作正常,只是它只会在 pthread_create() 使用 EAGAIN 代码失败之前创建大约 300 个线程(303,有时是 304),这意味着:
“系统缺乏创建另一个线程所需的资源,否则将超过系统对进程 {PTHREAD_THREADS_MAX} 中的线程总数施加的限制。”
这不是同时303 个线程 - 每个线程都退出,这是由 gdb 确认的。每次调用进程请求函数时,都会有两个线程在运行。
所以这意味着“系统缺乏必要的资源”。我的问题是(可能有点愚蠢)——这些资源是什么?大概这是我的程序中的内存泄漏(当然可能,甚至可能),但我认为即便如此,考虑到程序的其余部分几乎没有什么,它也可以管理超过 300 个。
如何找出我的程序有多少内存可用以确认它已用完?有足够的内存和免费交换,所以大概是操作系统(Linux)施加的人为限制。
谢谢