关于Linux中的线程

时间:2010-01-11 10:39:49

标签: linux multithreading

单个进程在Linux中可以处理多少个线程(RHEL-5)?一旦创建了线程,每个线程可以获得多少堆栈?

4 个答案:

答案 0 :(得分:3)

最大线程数: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

答案 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线程在我知道的应用程序中工作。