epoll
2016-04-19 17:47:03 2 举报
epoll是Linux系统中的一种I/O复用技术,全称是Edge Triggered Epoll。它通过内核和用户空间共享的红黑树数据结构实现高效的事件管理。当某个文件描述符准备好进行读写时,内核会将其添加到就绪队列中,并触发epoll_wait()函数返回。这样,应用程序可以一次性获取多个文件描述符的状态,避免了频繁地轮询各个文件描述符,从而提高了系统性能。epoll支持水平触发和边缘触发两种模式,可以根据实际需求选择合适的模式。总之,epoll是一种高效、易用的I/O复用技术,广泛应用于高性能服务器开发中。
作者其他创作
大纲/内容
Thread
+_stack MtStack*; // 私有栈指针+ _jmpbuf jmp_buf; //上下文jmpbuf;+ _statck_size int; //栈的大小
-virtual Run()void; //由子类实现.
CDefaultWorker
-realrun(...) void //Worker启动时的运行函数-hand_switch(...) void //微线程切换函数
CFrame
+ log_:CTLog //框架日志对象+ monilog_:CTLog //框架监控日志对象+ fstat:CTStat //监控
CTShmCommu
+ producer_:CShmProducer*; //生产者+ comsumer_:CShmComsumer*;//消费者
- poll(...) int; //comsumer_-comsume;- sendto(...) int; //producer_-produce;
CSynaFrame
+ _init_flag static bool; //初始化状态标记+ _iNtfySock static int; //socket类型的通知句柄+_uMsfNo: unsigned int; //消息实例数+ _GroupId int; //spp worker组id+ _iNtfyFd int; //共享内存映射的管道句柄
MtFrame
-CreateThread() MicroThread*; //创建线程-Daemon() static void; //守护线程执行入口-InitFrame() bool; //初始化框架- virtual EpollSchedule() bool; //微线程触发切换函数
EpollProxy
+ _epfd int; //epoll句柄 + EpEvent* _evtlist; //事件集合+ FdRef* _eprefs; //用户监听的事件本地管理数组
- virtual EpollSchedule() bool;子类实现- EpollDisPath() void; //epoll_wait以及分发处理
EpollerObj
+ _fd:int ; //系统fd或者socket;+ _events int; //监听的事件类型+ _revents int; //收到的事件类型+_thread: MicroThread* ; //关联线程指针对象
+
CServerBase
+ log_:CTLog //业务日志+stat_:CTStat //统计+moncli_:CTProcMonCli //监控
- virtual realrun(...)void // 实际由子类实现
CSyncMsg
- virtual HandleProcess() int; - GetReqPkg() string&; // 获取拷贝的报文.
ThreadPool
+ default_thread_num:static unsigned int; //默认线程数据+ default_statck_size: static unsigned int; //默认栈大小+_freelist ThreadList; // 空闲待命的微线程队列+ _use_num:int ; // 当前正在使用的微线程数目+ _max_num; //最大的线程数
- InitalPool(int max_num) bool; //初始化线程池-AllocThread() MicroThread; // 微线程分配接口
CTCommu
IMtMsg
virtual HandleProcess()int; //微线程处理入口
MicroTHread
+enum ThreadType{}; //线程类型+enum ThreadFlag{}; //线程标志+enum ThreadState{}; //线程状态
- virtual run() void; //线程的实际工作函数- SetSartFunc() void ; // 微线程入口函数管理注册
0 条评论
下一页