• 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手冊。必要的话能够看下源代码哦,加油

  • 相关阅读:
    Java一次读取文本文件所有内容
    java Socket多线程聊天程序
    输出1-100内的质数(素数)
    random.nextInt()与Math.random()基础用法
    【bash】今天你坑队友了吗
    【awk】按小时切割日志
    python获取aliyun ECS实例
    记一次优化ansible inventory的小例子
    Apache Flume入门指南[翻译自官方文档]
    django入门-自定义管理界面-part7
  • 原文地址:https://www.cnblogs.com/wgwyanfs/p/7159292.html
Copyright © 2020-2023  润新知