libevent

  具体代码分析见附件!! 对其逻辑分析就不上传了!!

  libevent并不是线程安全的,但这不代表libevent不支持多线程模式,其实方法在前面已经将signal事件处理时就接触到了,那就是消息通知机制!!

看看memcache 基于libevent的实现

 

 可以看到:libevent多线程的实现设计思想为:

消息通知+同步层 并不是完全的消息通知!!!

  纯粹的消息通知机制:1: 当时处理认为A; 2:任务B来了; 3 :此时继续处理认为A; 4 :处理完认为A的时候,检查消息队列 发现有B任务,于是处理B任务;在操作系统的进程通信中,消息队列(消息信箱)都是操作系统维护的,你不必关心。 此时优点是通过消息通知,切换问题省心了(没必要立即响应任务B,避免了中途切换),不过消息是不能立即处理的(基于消息通知机制,这个总是难免的),而且所有的内容都通过消息发送,比如任务的一些附属信息,这无疑增加了通信开销

消息通知+同步层:有个折中机制可以减少消息通信的开销,就是提取一个同步层,还拿上面的例子来说,你把工作安排都存放在一个工作队列中,而且任何人把新任务扔到这个队列or 可以从队列取这个任务

 

posted @   codestacklinuxer  阅读(291)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示