Linux服务器开发,libevent/libev框架实战那些坑

本文介绍了Linux服务器开发中libevent和libev框架的使用,探讨了它们在处理网络IO、定时及信号事件时的异步事件处理。文章指出libevent的全局变量和数据结构问题,以及libevent的计时器实现。同时,讨论了如何阅读和设计网络库,提出了时间戳计算、事件包装和处理策略。最后,文章强调了数据缓冲区的设计和回调函数解耦的重要性,以及清晰思路在编程中的价值。
摘要由CSDN通过智能技术生成

──────────────────────────────────────────────────────────────
┌————————————┐
│▉▉♥♥♥♥♥♥♥♥ 99

前言

libevent、libev和libuv都是c语言实现的异步事件库。注册异步事件,检测异步事件,根据事件的触发先后顺序调用相对应的函数处理事件。
处理的时间包括:**网络IO事件,定时事件以及信号事件。**这三个是驱动服务器逻辑的三个重要事件。
libevent和libev解决了跨平台的问题,封装了异步事件库与操作系统的交互。
libevent使用了大量的全局变量,很难安全得在多线程环境中运行;event的数据结构太大,包含了io、时间以及信号 处理全封装在一个结构体中,额外的组件如http、dns、openssl等实现质量差,计时器采用最小二叉堆(libuv改为最小四叉堆)不能很好的处理时间事件。

在这里插入图片描述

如何阅读网络库

记住两个线索:

网络封装

  • IO检测
  • IO操作

事件操作

  • 连接建立的问题 (限制最大连接数,设置黑白名单,创建用户的对象)
  • 连接断开
  • 数据到达 (具体消息的分发,解密)
  • 数据发送

不注重效率的都会使用g

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

屯门山鸡叫我小鸡

加油

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值