首先我使用如下的方式查看单进程下的最大线程数是64  
cat /usr/include/bits/local_lim.h
/* The number of threads per process.  */
#define _POSIX_THREAD_THREADS_MAX       64
/* We have no predefined limit on the number of thre                      ads.  */
#undef PTHREAD_THREADS_MAX
但是我实际写一个小的测试程序 不断的创建线程,最大可以创建32757个线程,不是应该只能创建64个吗?
这个具体该怎么理解,希望有人解惑,谢谢!

解决方案 »

  1.   

    我的理解是,_POSIX_THREAD_THREADS_MAX这个宏是posix标准要求定义的,但是这个宏并没有在linux系统中有效,一般创建的线程数据跟系统可用的内存有关
      

  2.   

    注意这段注释:
    /* We have no predefined limit on the number of threads.  */另外,Linux的线程数有限制:
    1. 操作系统内核支持的数量;
    2. 每一个线程都是要占用内存的,一个进程占用的内存通常是有限制的。 可以通过ulimit -a查看。
    3. 系统总内存是有限制的。