进程的最大线程数目取决于3个因素:线程堆栈大小、进程的最大内存和操作系统位数
查看系统默认值:
[root@c0109 ~]# cat /proc/sys/kernel/threads-max
57709
调整栈大小:
[root@c0109 ~]# ulimit -s
修改默认值:
[root@c0109 ~]# echo xxx > /proc/sys/kernel/threads-max
测试:
#include <stdio.h> #include <pthread.h> #include <sys/wait.h> void *foo() { while(1) sleep(1); } int main() { int i = 0; pthread_t thread; while(1) { if (pthread_create(&thread, NULL, foo, NULL) != 0) { printf("Thread create failed!\n"); return 1; } printf("%d\n", ++i); } return 0; }
编译:
gcc -o test test.c -lpthread