ChinaUnix.net
相关文章推荐:

epoll 多线程

有个tcp gate需要同时处理大约3万的并发连接,然后把从客户端发来的资料转发给内部的一个server(只有一个socket跟内部服务器连接), 开N个线程处理客户端的数据读写与加密解密处理,下列哪种方式比较好,谢! 1, 只有一个线程去select/epoll所有fd,有读写事件后再分发给另外的N-1个线程; 2,每个线程自己去select/epoll 一组自己的fd;

by 学与思 - C/C++ - 2010-12-10 17:29:02 阅读(7987) 回复(10)

相关讨论

服务器模型里面不是每个请求来了会用一个线程处理业务逻辑么,在这个线程里面只需处理这个请求的FD啊,还用epoll干嘛?没明白 谁能简要用代码说明一下线程+epoll模型到底怎么回事? 这个问题困惑我一个月啦 谢谢

by szlishun - C/C++ - 2009-10-23 16:41:57 阅读(5152) 回复(10)

目前想到了用心跳的方法: 做一个定时器,定时为每个fd对应的次数加,当这个数超过count=3的时候服务端默认是client端断线了,把它close掉。在接收心跳活接收任务里,把fd对应的数清零。 epoll_wait的超时取最近的一个就行了,单线程版本很容易做。线程版本就得加上线程锁了,而且在一个socket事件发生后,还需要把它的超时回调方法从队列中移除,防止线程操作同一个处理对象。这个有点麻烦,需要从队列中快速找到并移除它,...

by mandagod - C/C++ - 2009-09-09 17:14:04 阅读(2686) 回复(1)

问2个select/epoll线程的问题 1. select 是进程限定fd数,还是线程限定fd数. 假如我创建1025个线程,每个线程管一个TCP连接。用select是否可以 2. 很描述epoll优点的,都是基于 使用一个线程epoll所有TCP连接 这种情况。 我的程序是使用线程,一个线程epoll一个TCP连接。这样 epoll相对select还有没有优势

by qinyd - C/C++ - 2008-10-22 21:40:39 阅读(7646) 回复(12)

epoll 线程使用问题 关于epoll 的基本用法,我相信大家很熟悉 简单描述一下 在epoll过程中, 我们基本是epoll_wait 等待到我们 想要的事件, 并且从epoll 返回的event 里面 找出事件,找到相应 的socket 和 unit, 进行操作 我简单描述一下 我的做法 map socket, void * socket 代表 目前的socket void * 代表 和它相关的unit 对象 当unit 希望等待socket 获取数据, 那么 我们首先将socket ,和...

by benjiam - C/C++ - 2009-11-02 15:42:10 阅读(15081) 回复(10)

我想问个关于epoll_wait的问题,我的程序在初始化的时候根据CPU的核数,还有数量来分配了适当的线程数,每个线程创建一个epoll对象,工作线程起来后,会阻塞在epoll_wait函数处,当有用户发送数据包的时候,会进行处理,为了避免线程同步带来的问题,我以会话为单位来进行操作。每个会话只会在指定的epoll对象中,由于程序的功能所需,需要设定计时器。保证1分钟切换会话中的下一个用户,由于在这个过程中有可能会出现:用户的添加...

by kerneltea - C/C++ - 2011-07-19 11:30:49 阅读(3946) 回复(8)

线程epoll 问题, epoll_wait 不返回 设计的思想是这样的。 起一个子线程,这个线程称会不断建立与服务器的连接。 主线程则会 不断在epoll_wait 等待返回然后处理。 我这里epoll_wait 不返回。 通过网络监控 发现 子线程的的连接应该建立起来了 有三步握手了。 但我的程序一直不返回 还有2点 read write 的 阻塞和非阻塞有什么区别吗? connect 的阻塞和非阻塞有什么区别? [code]#include #include <...

by benjiam - C/C++ - 2007-06-07 23:48:15 阅读(3069) 回复(1)

本人最近用epoll线程写服务器程序!现在有几个问题想请教一下!希望大虾们能帮助一下! 现在主要问题是:main函数的主线程有两个变量,一个是epfd是epoll_create后的文件描述符,另一个是epoll_event ev变量! 用过epoll的人都知道,在网络read之后要对epoll监听的描述符进行修改,修改为ev.events = epollOUT|epollET 然后调用epoll_ctl函数! 不过现在是我的程序这个修改要在子线程中完成一个任务后进行!而不是在主线程中!我...

by raygtr - Linux环境编程 - 2009-09-28 14:56:33 阅读(3539) 回复(4)

请问!如何实现进程+线程 socket select 或 epoll? 谢谢 :D

by siwen_unix - C/C++ - 2005-11-07 14:36:23 阅读(7313) 回复(15)

线程时,每个线程都POLL/epoll,会怎提升性能还是降低? 请大家指点。。。谢谢!

by chishanmingshen - 内核源码 - 2013-07-20 19:39:11 阅读(1609) 回复(6)

我最近在网上找了一个程序后改写成自己的程序!以前用进程模型一个客户连接进来后就fork一个,然后父进程把ACCEPT的描述符关闭。 这样每个进程都有自己的独立描述符!那么就不会受到1024个文件描述符的限制!但是,进程创建与进程调度还有内存的消耗系统是吃不消的!后来我就到网上找了一个用epoll线程的模型后自己改了一下!后来发现在一个很大的BUG,就是这个模型最只可以有1024个连接就挂掉了! 我把代码上传到附件!大家...

by raygtr - Linux环境编程 - 2009-10-14 17:57:55 阅读(3034) 回复(4)