小弟最近用linux做一个网络服务程序.使用每一个请求建一个线程的模式.使用: if(pthread_create(&tid,NULL,ThreadRec,(void *)&argIn2)) printf("create rec thread fail..\n"); 语句创建线程,使用:pthread_exit(NULL);return NULL; 结束线程. 服务运行一切顺利.使用 ps axms命令查看线程数目.随着用户连接与断开增减.一切正常. 问题是:当用户连接与断开过多.也就是曾经创建的线程达到一定数目.pthread_create返回失败.用户线程不能...
by Billchen28 - C/C++ - 2007-12-02 00:52:44 阅读(4671) 回复(6)
创建一个新进程, 测试系统上最大线程数限制(结果见 表一 ), 但是有下面几处不明白: 1. 线程栈大小在:[128KB, 16392KB] 区间内时, 该进程内所有线程占用"栈"内存平均在 3G 左右. 而我机器只有1G 物理内存(无交换分区). 2. 线程栈大小在:128KB, 64KB, 32KB之间由大到小变化时, 该进程内所有线程占用"栈"内存也会变化? 按理说 (ThreadStackSize * MaxThreads) 大体应为物理空间的常数倍. 哪位大牛指点指点迷津 ? ...
比如: [code] #include "pthread.h" #define T_MAX 1000 void *th(void *); main() { int i=0; pthread_t tid[T_MAX]; while(i<=T_MAX){ if(pthread_create(&tid,NULL,th,NULL)!=0){ i++; //此时如何确定还有多少个仍活着的线程? } } } void *th(void *para) { pthread_detach(pthread_self()); printf("alived!\n"); pthread_exit(0); ...
我想知道系统中PTHREAD_THREADS_MAX的值,但我发现这个值是未定义的,/usr/include/bits/local_lim.h里面是这样写的:
[code]
/* The number of threads per process. */
#define _POSIX_THREAD_THREADS_MAX 64
/* We have no predefined limit on the number of threads. */
#undef PTHREAD_THREADS_MAX[/code]
于是我写了一个小程序来试:
[code]#include
我使用的是Apache Tomcat/5.0.28,我在server.xml中配置了最大并发连接数,配置如下:
我使用的是Apache Tomcat/5.0.28,我在server.xml中配置了最大并发连接数,配置如下: