Pthread_create创建多个线程失败
Pthread_create fails after creating several threads
我正在开发一个处理客户端连接的应用程序。我为每个请求生成一个线程,因为会有短任务。但是,在处理一定数量的连接后,我一直有问题。具体来说,在381个连接之后,pthread_create无法创建新线程。我知道如果应用程序耗尽了资源,或者已经创建了超过PTHREAD_THREADS_MAX的线程,这可能会失败。
奇怪的是,当这个错误发生时,前381个线程已经停止了。我没有使用pthread_join来等待这些线程停止,我相信pthreads不需要我以某种方式"停止"线程,如果我错了请纠正我(至少手册没有提到这一点)。我认为当几个线程同时生成时可能会产生这种情况,但是,我已经测试了几次,每次第382个线程创建失败。
有人知道会发生什么吗?如有任何帮助,不胜感激。
如果您不调用pthread_join
或分离线程(通过调用pthread_detach
或使用属性在分离状态下创建它),则终止线程使用的资源将永远不会被释放。这是你的问题。如果您不需要连接线程,请在创建线程后立即分离它们。
相关文章:
- 非静态成员失败的线程调用函数
- MS 本机单元测试 - 断言::线程失败不起作用
- 两个线程一个使用流 Api,另一个线程创建文件失败并出现错误ERROR_SHARING_VIOLATION
- 使用提升线程时编译失败
- librdkafka 线程在失败时不清理
- 错误:静态断言失败:std ::线程参数必须在转换为rvalues后不可行
- 什么时候标准::线程::连接会因no_such_process而失败
- 更改线程实时调度策略失败:config_rt_group_sched = y
- C++ 提升 UDP 接收器在放入线程时失败
- 为线程构造函数传递引用以将其绑定到函数失败
- glewInit 从后台线程调用时失败
- 链接到boost ::线程失败
- 将函子传递给boost ::线程在Visual Studio 2010中失败
- Qt 窗口包含提升线程标头失败
- 在多个线程中使用libcurl失败
- pthread_create()在Xeon Phi上每60个线程失败一次(参数无效)
- Boost线程失败Boost_ASSERT(px!=0);
- 当一个工作线程失败时,如何中止剩余的工作线程
- 一段时间后使线程失败
- Pthread_create创建多个线程失败