在Linux(RHEL-5)中,单个进程可以处理多少个线程?一旦创建了线程,每个线程可以获得多少堆栈?
发布于 2010-01-11 18:45:17
最大线程数:Maximum number of threads per process in Linux?
堆栈大小:
即使现在提供了pthread_attr_setstacksize()和pthread_attr_setstackaddr(),我们仍然建议您不要使用它们,除非您确实有充分的理由这样做。LinuxThreads的默认堆栈分配策略几乎是最优的:堆栈开始较小(4k),并根据需要自动增长到相当大的限制(2M)。此外,没有可移植的方法来估计线程的堆栈要求,因此自己设置堆栈大小会降低程序的可靠性和不可移植性。
(来自http://pauillac.inria.fr/~xleroy/linuxthreads/faq.html)
发布于 2010-01-11 18:46:52
每个进程的线程数没有最大值。
然而,总的活动线程数是有限制的。可以通过键入以下命令来检索此值:
cat /proc/sys/kernel/threads-max您还可以更改此值:
echo 99999 > /proc/sys/kernel/threads-max希望这能有所帮助。
发布于 2010-01-11 20:50:18
如果您在32位机器上,那么线程堆栈最终将消耗地址空间,这取决于地址空间的大小,可能小于10000个线程。
10k线程当然是可行的,有些人确实运行生产服务器有这么多,但你真的想要确定这是最好的方式来做你正在做的事情。
如果您正在考虑拥有10k线程,那么您可能无论如何都会有64位的机器,以及大量的ram。
https://stackoverflow.com/questions/2041224
复制相似问题