fxhnkf
关于线程创建个数的问题
我的程序里调用pthread_create创建一个线程,此线程执行完一定任务后由pthread_exit(NULL);退出
主程序不断的创建此thread
发现到了第500多次创建时,pthread_create返回11,我查了一下errno.h,11是"No more processes"
这是为什么呢????
我的程序里调用pthread_create创建一个线程,此线程执行完一定任务后由pthread_exit(NULL);退出
主程序不断的创建此thread
发现到了第500多次创建时,pthread_create返回11,我查了一下errno.h,11是"No more processes"
这是为什么呢????
fxhnkf
关于线程创建个数的问题
感谢大家的帮忙!
感谢大家的帮忙!
renstone921
关于线程创建个数的问题
系统创建的进程数目太多,可能你的系统里时使用进程模仿线程的,既然你的机器的资源不是无限的,每创建一个线程,大多数情况下,都需要有1M的堆栈空间,你算一下,你的系统里能创建多少线程吧。
好像是getrlimit函数,获得系统的资源限制,你man一下,看一下你的系统的限制吧。或者使用ulimit命令。
系统创建的进程数目太多,可能你的系统里时使用进程模仿线程的,既然你的机器的资源不是无限的,每创建一个线程,大多数情况下,都需要有1M的堆栈空间,你算一下,你的系统里能创建多少线程吧。
好像是getrlimit函数,获得系统的资源限制,你man一下,看一下你的系统的限制吧。或者使用ulimit命令。
fxhnkf
关于线程创建个数的问题
可是我每次都调用
pthread_exit(NULL)
来释放线程资源啊??
难道这些资源不会被释放掉吗??我用的机器是HP的L2000
我想他还不至于这么差吧
可是我每次都调用
pthread_exit(NULL)
来释放线程资源啊??
难道这些资源不会被释放掉吗??我用的机器是HP的L2000
我想他还不至于这么差吧
renstone921
关于线程创建个数的问题
不好意思,没用过hp的机子。不过你先还是先确定一下你系统的进程数目的上限是什么,这个应当是可配置的。
不好意思,没用过hp的机子。不过你先还是先确定一下你系统的进程数目的上限是什么,这个应当是可配置的。
fxhnkf
关于线程创建个数的问题
就算是系统进程数目的上限可以配置,可以更改的更大
如果真的pthread_exit(NULL);不能完全释放线程资源,那么不管这个上限设为多大,总会将资源用光的,达到上限的
我认为应该还是有其他的原因
就算是系统进程数目的上限可以配置,可以更改的更大
如果真的pthread_exit(NULL);不能完全释放线程资源,那么不管这个上限设为多大,总会将资源用光的,达到上限的
我认为应该还是有其他的原因
fxhnkf
关于线程创建个数的问题
感谢大家参与讨论
感谢大家参与讨论
fxhnkf
关于线程创建个数的问题
还望大家多看看,多聊聊
还望大家多看看,多聊聊
albcamus
关于线程创建个数的问题
你是否确信,当主线程调用pthread_create时,子线程们都以pthread_exit了?(这个不是必要的,但又可能是子线程没退出导致的问题)
你是否确信,当主线程调用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 进程名,可以看到该进程有几个线程.
[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
是不是需要调用pthread_join
albcamus
关于线程创建个数的问题
晕死,不写线程才半年,居然就忘干净了。
问题如下解决:在每个线程的一开始,用pthred_detach(pthread_self())来使自己detach掉就可以了。
晕死,不写线程才半年,居然就忘干净了。
问题如下解决:在每个线程的一开始,用pthred_detach(pthread_self())来使自己detach掉就可以了。