zoukankan      html  css  js  c++  java
  • libevent入门篇

    libevent作为一个c网络库具有非常好的可移植性。由于他包括了非常多可移植的接口封装如linux支持的epoll、select。BSD支持的kqueue,window select等。

    学习libevent最好的方式就是阅读源代码,首先我们须要看一下libevent的官方站点介绍首先对其有一个了解。介绍是英文写的非常好,这里给个链接http://libevent.org/。

            看完这个链接后我们事实上须要继续学习一下什么叫做异步IO, libevent是这么称呼的,事实上IO一共同拥有五种,各自是堵塞IO、非堵塞IO、IO复用、异步IO、信号IO。

    这个在UNIX网络编程里面都有介绍。

    libevent这里指的异步IO事实上和IO复用是一个意思。我们临时能够先这样理解。linux里面的异步IO事实上调用的诸如aio_read之类的接口。read之后并不直接返回数据,当数据真正被读取后,内核会告诉用户数据已经从内核复制到了用户空间。libevent之所以叫做异步IO是由于整个框架是基于事件的注冊和响应这个层面来讲的。首先须要将描写叙述符设置为非堵塞状态,然后将它注冊相应的事件以及事件回调函数。

    当事件发生时回调函数開始运行,事实上这就是linux下epoll的一个封装,仅仅只是libevent给做的接口更加好用方便而已,这就是我的初步理解啦。

           libevent里面解说它的异步IO的文章在这里。里面讲的非常具体,从最開始的堵塞到select再到epoll,再到libevent的具体代码,步步深入,大家学习的时候最好还是看看官方给的样例。给个链接。

    http://www.wangafu.net/~nickm/libevent-book/01_intro.html

          后面的開始动手写一个简单的server吧,參考官方的api手冊。必要的话能够看下源代码哦,加油

  • 相关阅读:
    简单实现缓存需求
    Visual Studio 项目模板、文件模板、代码段和环境设置
    Memcached 基础应用
    Visual Studio 2010 模型设计工具 基本应用
    委托和事件 委托
    C# 编码规范
    锂电池正确使用方法
    HTC W800(XV6750) USB 连接 Windows 7 设备错误 解决办法
    UML 面向对象分析与设计
    注册表项写入与删除简便方法
  • 原文地址:https://www.cnblogs.com/wgwyanfs/p/7159292.html
Copyright © 2011-2022 走看看