关于epoll和消息队列的关联,一起讨论的进,在线等答案
我对epoll的内部实现不太理解。
消息队列无非就是个链表,send 给它,然后recevie它。
那epoll,是否就是,监听某个地方,比如消息队列,一有消息或者什么,然后就做出处理呢
[解决办法]
epoll使用红黑树索引fd,存储其epoll_event,实际去用一下select,再用一下epoll,看看编程会给你带来什么改变不就好了,差别是很大的,只有你自己去写个服务端就发现了,epoll的精髓在于其struct epoll_event结构体的定义,对实际服务端开发减少了非常多的遍历,从原来的O(n^2)减少到O(n).
typedef union epoll_data { void *ptr; int fd; uint32_t u32; uint64_t u64; } epoll_data_t; struct epoll_event { uint32_t events; /* Epoll events */ epoll_data_t data; /* User data variable */ };