zoukankan      html  css  js  c++  java
  • 同一线程多次创建 的 线程资源释放问题在每个线程的一开始,用pthred_detach(pthread_self())来使自己detach掉

    fxhnkf
    关于线程创建个数的问题

    我的程序里调用pthread_create创建一个线程,此线程执行完一定任务后由pthread_exit(NULL);退出
    主程序不断的创建此thread
    发现到了第500多次创建时,pthread_create返回11,我查了一下errno.h,11是"No more processes"
    这是为什么呢????

    fxhnkf
    关于线程创建个数的问题

    感谢大家的帮忙!

    renstone921
    关于线程创建个数的问题

    系统创建的进程数目太多,可能你的系统里时使用进程模仿线程的,既然你的机器的资源不是无限的,每创建一个线程,大多数情况下,都需要有1M的堆栈空间,你算一下,你的系统里能创建多少线程吧。
    好像是getrlimit函数,获得系统的资源限制,你man一下,看一下你的系统的限制吧。或者使用ulimit命令。

    fxhnkf
    关于线程创建个数的问题

    可是我每次都调用
    pthread_exit(NULL)
    来释放线程资源啊??
    难道这些资源不会被释放掉吗??我用的机器是HP的L2000
    我想他还不至于这么差吧

    renstone921
    关于线程创建个数的问题

    不好意思,没用过hp的机子。不过你先还是先确定一下你系统的进程数目的上限是什么,这个应当是可配置的。

    fxhnkf
    关于线程创建个数的问题

    就算是系统进程数目的上限可以配置,可以更改的更大
    如果真的pthread_exit(NULL);不能完全释放线程资源,那么不管这个上限设为多大,总会将资源用光的,达到上限的

    我认为应该还是有其他的原因

    fxhnkf
    关于线程创建个数的问题

    感谢大家参与讨论

    fxhnkf
    关于线程创建个数的问题

    还望大家多看看,多聊聊

    albcamus
    关于线程创建个数的问题

    你是否确信,当主线程调用pthread_create时,子线程们都以pthread_exit了?(这个不是必要的,但又可能是子线程没退出导致的问题)

    soul_of_moon
    关于线程创建个数的问题

    [quote][i]原帖由 "fxhnkf" 发表:[/i]
    我的程序里调用pthread_create创建一个线程,此线程执行完一定任务后由pthread_exit(NULL);退出
    主程序不断的创建此thread
    发现到了第500多次创建时,pthread_create返回11,我查了一下errno.h,11是"No more proces..........[/quote]
    线程创建失败的原因是:
    EAGAIN not enough system resources to create  a  process  for  the  new
           thread.

    EAGAIN more than PTHREAD_THREADS_MAX threads are already active.
    估计你的线程没有退出或来不及释放资源,可以用命令ps -A -m |grep 进程名,可以看到该进程有几个线程.

    openX
    关于线程创建个数的问题

    是不是需要调用pthread_join

    albcamus
    关于线程创建个数的问题

    晕死,不写线程才半年,居然就忘干净了。

    问题如下解决:在每个线程的一开始,用pthred_detach(pthread_self())来使自己detach掉就可以了。
  • 相关阅读:
    golang 的几个入门资料
    docker 容器网络基础
    nginx 容器反向代理网址的设置
    【知乎Live】狼叔:如何正确的学习Node.js
    nginx资料汇总
    web 框架
    work behind corp proxy
    [转载] 历史上前端领域的重要技术革命
    前后端要不要分离以及如何做
    微电子工艺基础知识讲解(集成电路历史/厂商/产业链)
  • 原文地址:https://www.cnblogs.com/cy163/p/1269920.html
Copyright © 2011-2022 走看看