Pthread_create创建多个线程失败

Pthread_create fails after creating several threads

本文关键字:线程 失败 创建 create Pthread      更新时间:2023-10-16

我正在开发一个处理客户端连接的应用程序。我为每个请求生成一个线程,因为会有短任务。但是,在处理一定数量的连接后,我一直有问题。具体来说,在381个连接之后,pthread_create无法创建新线程。我知道如果应用程序耗尽了资源,或者已经创建了超过PTHREAD_THREADS_MAX的线程,这可能会失败。

奇怪的是,当这个错误发生时,前381个线程已经停止了。我没有使用pthread_join来等待这些线程停止,我相信pthreads不需要我以某种方式"停止"线程,如果我错了请纠正我(至少手册没有提到这一点)。我认为当几个线程同时生成时可能会产生这种情况,但是,我已经测试了几次,每次第382个线程创建失败。

有人知道会发生什么吗?如有任何帮助,不胜感激。

如果您不调用pthread_join或分离线程(通过调用pthread_detach或使用属性在分离状态下创建它),则终止线程使用的资源将永远不会被释放。这是你的问题。如果您不需要连接线程,请在创建线程后立即分离它们。