返回信息流在一台64位,内存3G的centos上,用下面的程序能并发3w多个线程,这个数量还能提高吗?
通过ulimit -s修改栈大小没有变化,应该是与64位机器有关。
一个进程并发的线程最大数值是不是还与进程允许打开文件句柄最大值(默认1024吧)有关呢?
如果是处理socket连接,应该与允许打开端口范围也有关吧
目的是能做到同时响应上万个连接请求,但找了个线程池程序(http://t.cn/zQn8bw8)用了用,发现到1100个连接后就表现不是很好。
小白越想越乱,求指点啊
#include <stdio.h>
#include "pthread.h"
void * foo(void* arg){
sleep(30);
}
int main() {
int i = 0;
pthread_t thread;
int ret;
while (1) {
if ((ret=pthread_create(&thread, NULL, &foo, NULL)) != 0){
printf("create thread error %d \n", err);
break;
}
i++;
}
pthread_join(id,NULL);
printf("i = %d\n", i);
}
这是一条镜像帖。来源:北邮人论坛 / cpp / #73232同步于 2013/8/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
linux上的线程池问题
LxxEver
2013/8/15镜像同步9 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
自己贴一个可以讨论的帖子 http://stackoverflow.com/questions/3521485/nptl-caps-maximum-threads-at-65528
还没看你提供的链接。
我用的libevent处理连接事件,但每一个连接来了后的处理不得开一个线程吗?用单线程的话,是指每一个连接信息都先存在一个队列中,然后一个一个处理?会不会有问题啊~
【 在 nuanyangyang 的大作中提到: 】
: 请用epoll。这么大的连接量,多线程不是个好办法。反而单线程轮询更快。
: http://www.kegel.com/c10k.html
【 在 LxxEver 的大作中提到: 】
: 还没看你提供的链接。
: 我用的libevent处理连接事件,但每一个连接来了后的处理不得开一个线程吗?
真不是必须这样。
: 用单线程的话,是指每一个连接信息都先存在一个队列中,然后一个一个处理?
不一定。单线程也可以并行地处理。
: 会不会有问题啊~
有相关的资料吗,给点链接看看~ 多谢
【 在 nuanyangyang 的大作中提到: 】
: 真不是必须这样。
: 不一定。单线程也可以并行地处理。
: