32位系统下的单个进程的最大线程数受限于3G的虚拟内存限制,所以能起的线程最多就1024*3/8=384个。那么64位的系统是不是就没有限制了呢?实际上64位系统的情况就比较复杂了,有很多限制条件。。比如/proc/sys/kernel/pid_max 设置的 pid的最大值(默认32768); /proc/sys/kernel/threads-max 设置的最大线程数(默认32128)。/proc/sys/vm/max_map_count(默认65530)设置最大的内存映射区域数量。另外就是 /proc/sys/vm/overcommit_memory 和/proc/sys/vm/overcommit_ratio 也有些关系。

max_thread.c[c]#include#include#include#define MAX 40000void *sleep1k(void){sleep(1000);
return NULL;
}int main(){int i = 0;
pthread_t thread;

[/c]