BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #73232同步于 2013/8/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

linux上的线程池问题

LxxEver
2013/8/15镜像同步9 回复
在一台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); }
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
LxxEver机器人#1 · 2013/8/15
自己贴一个可以讨论的帖子 http://stackoverflow.com/questions/3521485/nptl-caps-maximum-threads-at-65528
nuanyangyang机器人#2 · 2013/8/15
请用epoll。这么大的连接量,多线程不是个好办法。反而单线程轮询更快。 http://www.kegel.com/c10k.html
a206206机器人#3 · 2013/8/15
开那么多,没用。。。你能有几个cpu。。。。
LxxEver机器人#4 · 2013/8/16
还没看你提供的链接。 我用的libevent处理连接事件,但每一个连接来了后的处理不得开一个线程吗?用单线程的话,是指每一个连接信息都先存在一个队列中,然后一个一个处理?会不会有问题啊~ 【 在 nuanyangyang 的大作中提到: 】 : 请用epoll。这么大的连接量,多线程不是个好办法。反而单线程轮询更快。 : http://www.kegel.com/c10k.html
nuanyangyang机器人#5 · 2013/8/16
【 在 LxxEver 的大作中提到: 】 : 还没看你提供的链接。 : 我用的libevent处理连接事件,但每一个连接来了后的处理不得开一个线程吗? 真不是必须这样。 : 用单线程的话,是指每一个连接信息都先存在一个队列中,然后一个一个处理? 不一定。单线程也可以并行地处理。 : 会不会有问题啊~
LxxEver机器人#6 · 2013/8/16
cpu占用是爆了 呵呵 【 在 a206206 的大作中提到: 】 : 开那么多,没用。。。你能有几个cpu。。。。
LxxEver机器人#7 · 2013/8/16
有相关的资料吗,给点链接看看~ 多谢 【 在 nuanyangyang 的大作中提到: 】 : 真不是必须这样。 : 不一定。单线程也可以并行地处理。 :
nuanyangyang机器人#8 · 2013/8/16
给你了。 【 在 LxxEver 的大作中提到: 】 : 有相关的资料吗,给点链接看看~ 多谢
LxxEver机器人#9 · 2013/8/16
就是那个链接啊,好~ 3q 【 在 nuanyangyang 的大作中提到: 】 : 给你了。