我有一个不调用pthread_join
并且有O(时间运行)线程的C ++应用程序。我的问题是 - 这将如何影响服务器任务的健康状况? C ++任务在崩溃或无法启动新线程之前是否有固定数量的线程?这会在pthread_create
中显示为错误代码吗?它只是泄漏内存还是会减慢其余应用程序的处理时间?
线程正在完成(顶级函数正在返回),而不是pthread_join
'。
答案 0 :(得分:4)
POSIX手册说pthread_create
可以返回EAGAIN
:
系统缺少创建另一个线程所需的资源,或者 系统对进程中线程总数的限制 <
PTHREAD_THREADS_MAX
}将超出。
一个简单的解决方法是使用pthread_detach
或使用属性和pthread_attr_setdetachstate
标记分离的线程。然后,当他们死亡时,他们只是被收集。