libevent
具体代码分析见附件!! 对其逻辑分析就不上传了!!
libevent并不是线程安全的,但这不代表libevent不支持多线程模式,其实方法在前面已经将signal事件处理时就接触到了,那就是消息通知机制!!
看看memcache 基于libevent的实现

可以看到:libevent多线程的实现设计思想为:
消息通知+同步层 并不是完全的消息通知!!!
纯粹的消息通知机制:1: 当时处理认为A; 2:任务B来了; 3 :此时继续处理认为A; 4 :处理完认为A的时候,检查消息队列 发现有B任务,于是处理B任务;在操作系统的进程通信中,消息队列(消息信箱)都是操作系统维护的,你不必关心。 此时优点是通过消息通知,切换问题省心了(没必要立即响应任务B,避免了中途切换),不过消息是不能立即处理的(基于消息通知机制,这个总是难免的),而且所有的内容都通过消息发送,比如任务的一些附属信息,这无疑增加了通信开销。
消息通知+同步层:有个折中机制可以减少消息通信的开销,就是提取一个同步层,还拿上面的例子来说,你把工作安排都存放在一个工作队列中,而且任何人把新任务扔到这个队列or 可以从队列取这个任务
http代理服务器(3-4-7层代理)-网络事件库公共组件、内核kernel驱动 摄像头驱动 tcpip网络协议栈、netfilter、bridge 好像看过!!!!
但行好事 莫问前程
--身高体重180的胖子

浙公网安备 33010602011771号