单个进程在Linux中可以处理多少个线程(RHEL-5)?一旦创建了线程,每个线程可以获得多少堆栈?
答案 0 :(得分:3)
最大线程数:Maximum number of threads per process in Linux?
堆栈大小:
即使现在提供了pthread_attr_setstacksize()和pthread_attr_setstackaddr(),我们仍然建议您不要使用它们,除非您有充分的理由这样做。 LinuxThreads的默认堆栈分配策略几乎是最优的:堆栈从小开始(4k)并根据需要自动增长到相当大的限制(2M)。此外,没有可移植的方法来估计线程的堆栈需求,因此自己设置堆栈大小会使您的程序不可靠和不可移植。
答案 1 :(得分:1)
按流程没有最大线程数。
但总活动线程有限制。键入以下内容可以检索此值:
cat /proc/sys/kernel/threads-max
您也可以更改此值:
echo 99999 > /proc/sys/kernel/threads-max
希望这有帮助。
答案 2 :(得分:1)
如果您使用的是32位计算机,那么线程堆栈最终将消耗地址空间,具体取决于大小,可能位于< 10,000个线程。
10k线程当然是可行的,有些人确实运行了那么多的生产服务器,但你真的想确保这是你正在做的事情的最佳方式。
如果您正在考虑使用10k线程,那么无论如何您可能拥有64位计算机,还有很多ram。
答案 3 :(得分:0)
使用pthread_attr_setstack方法可以配置线程堆栈大小。线程数量仅限于您拥有的资源,超过2K线程在我知道的应用程序中工作。