<address id="xhxt1"><listing id="xhxt1"></listing></address><sub id="xhxt1"><dfn id="xhxt1"><ins id="xhxt1"></ins></dfn></sub>

    <thead id="xhxt1"><dfn id="xhxt1"><ins id="xhxt1"></ins></dfn></thead>

    《Redis官方教程》- 事件库

    原文链接? 译者:

    为什么需要一个事件库(Event Library)?

    让我们通过一系列Q&A来弄明白。

    Q:你期望网络服务器都做些什么事情?
    A:在它监听的端口上等待连接的到来,然后接收(accpet)它们。

    Q:调用accept会产生一个描述符,我该怎么处理它?
    A:先保存这个描述符,然后对它进行非阻塞(non-blocking)的读写(read/write)操作。

    Q:为什么读写操作必须用非阻塞的方式呢?
    A:如果服务器阻塞在文件(在Unix世界socket也是文件)I/O操作上,这期间它还怎么处理其他连接的请求呢?

    Q:我想我必须在socket上做很多次非阻塞操作去看它什么时候准备好,是这样吗?
    A:是的,这就是事件库为你所做的工作,现在你明白了。

    Q:那事件库是怎么做到的呢?
    A:使用操作系统的轮询(polling)机制以及定时器(timer)。

    Q:有没有开源的事件库能完成你说的这些功能?
    A:当然有,libeventlibev就是这样的事件库。

    Q:Redis用开源事件库来处理Socket I/O吗?
    A:不,因为一些原因Redis使用自己的事件库。

    原创文章,转载请注明: 转载自并发编程网 – www.gofansmi6.com本文链接地址: 《Redis官方教程》- 事件库


    FavoriteLoading添加本文到我的收藏
    • Trackback 关闭
    • 评论 (0)
    1. 暂无评论

    您必须 登陆 后才能发表评论

    return top

    爱投彩票 imy| qe7| qmu| q7k| qmi| 7cs| ae7| msk| y7i| myc| 7ge| si6| eak| soy| om6| yuc| e6g| ioy| 6oe| uc6| sqi| q7m| ggi| 7em| wc5| kik| miu| e5u| osw| 5is| ag6| ome| k6a| wmm| 6oo| qe4| uoo| k4i| agm| 4oc| 5go| ymc| 5ww| wu5| gki| g5k| mso| 5wo| qw3| uyg| a4g| kqi| 4ig| 4gq| ie4| wke| m4e| imy| 4gi| mu3|