究竟为什么需要一个事件库呢?让我们通过下面一系列问答来了解为什么。

问:你希望网络服务器持续不断地做什么事?

答:监听端口上进来的连接请求并接收它们。

问:调用套接字的Accept方法产生一个描述符,我们用这个描述符做什么?

答:保存这个描述符,并在它上面完成一次非阻塞读写操作。

问:为什么读写操作必须是非阻塞式的?

答:如果文件操作(在Unix系统中甚至于套接字都被描述成一个文件)是阻塞式的那么当它在一次文件I/O操作中被锁定时它怎么可能接收另外一个请求

问:我猜我必须在套接字上做很多次非阻塞式读写操作来得知它何时才能准备好,我说得对吗?

答:是的,这些就是事件库为你做的事。现在你知道了吧。

问:那事件库是怎么来完成它需要做的事呢?

答:事件库使用操作系统提供的轮询设施配合定时器一起完成工作。

问:那么有没有开源事件库来完成上面你描述的工作呢?

答:是的。libevent和libev就是我首先想到的两个这样的事件库。

问:Redis使用了这样的开源事件库来处理套接字输入输出了吗?

答:并没有,由于种种原因Redis实现了自己的事件库。

  • 转载自 并发编程网 - ifeve.com

《Redis官方文档》事件库相关推荐

  1. 《Redis官方文档》用Redis构建分布式锁

    <Redis官方文档>用Redis构建分布式锁 用Redis构建分布式锁 在不同进程需要互斥地访问共享资源时,分布式锁是一种非常有用的技术手段. 有很多三方库和文章描述如何用Redis实现 ...

  2. StackExchange.Redis 官方文档(五) Keys, Values and Channels

    StackExchange.Redis 官方文档(五) Keys, Values and Channels 原文:StackExchange.Redis 官方文档(五) Keys, Values an ...

  3. Redis官方文档(入门必备)

    函数大全 中文文档 官方文档

  4. 《Redis官方文档》用Redis构建分布式锁(悲观锁)

    2019独角兽企业重金招聘Python工程师标准>>> **用Redis构建分布式锁 ** 在不同进程需要互斥地访问共享资源时,分布式锁是一种非常有用的技术手段. 有很多三方库和文章 ...

  5. Redis 官方文档阅读之 High Availability

    文章目录 Distributed nature of Sentinel(sentinel的分布式特性) Quick Start Obtaining Sentinel(获取哨兵) Running Sen ...

  6. 《Redis官方文档》Redis调试指南

    原文链接      译者:Adeline Redis开发过程中十分注重其稳定性:我们尽一切努力来保证每一个版本的稳定,不出现突然崩溃等情况.但是即使在我们百分百的努力下,仍然没办法保证百分百的无bug ...

  7. 《Redis官方文档》Data types—数据类型

    String类型(字符串类型) String 是Redis中最基本的类型.Redis中的String 类型是二进制安全的,也就是说在Redis中String类型可以包含各种数据,比如一张JPEG图片或 ...

  8. redis官方文档中文版_Partitioning : 怎么样将你的数据分布在多个redis instance上?

    本文转载自[url]http://skynetdoc.com/?p=119[/url] 本人顺便修正了一些文字上的复制粘贴小错误,以及更新了一些文字以和英文版保持一致. Partitioning 能够 ...

  9. StackExchange.Redis官方文档(四)【键、值以及通道】

    键.值以及通道 在对待Redis时候,键和其他的事物之间有个相当重要的区别.键是在数据库中一段数据的唯一标识(可能String,List,Hash或者其他的Redis数据类型).键是没有任何实质意义, ...

最新文章

  1. 如何php防止XSS攻击
  2. 记一次JVM Metaspace溢出排查
  3. 树的直径【p3629】[APIO2010]巡逻
  4. Python应用实战案例-Python实现K线图绘制
  5. ros安装-Ubuntu14.04
  6. 动态代理案例1:运用Proxy动态代理来增强方法
  7. BOOST_LOCAL_FUNCTION宏用法的测试程序
  8. 上海立信会计学院_上海立信会计学院分数线_上海立信_立信会计_立信会计学院...
  9. nodeJS 的 path.resolve() 用法解析
  10. .NET5 开发手机提词应用,基于内嵌Web服务器及PowerPoint自动化
  11. java学习(131):hashtable
  12. Qt工作笔记-通过C++使widgets与QQuick交互(包含qml界面对象与C++对象映射)
  13. linux拷贝文件1003无标题,2.27Linux和windows互传;3.1用户配置文件和密码配置文件;3.2/3.3用户组用户...
  14. powerbi绘制地图_如何使用PowerBI绘制SQL Server 2017图形数据库
  15. STL 算法接口及用法说明
  16. hdu 1242 找到朋友最短的时间 (BFS+优先队列)
  17. 想要下载,却没有积分,CSDN你做个人吧
  18. [Altium Designer 2020 硬件设计]PCB封装库创建及3D模型添加
  19. 用Resource Hacker辅助升级相关测试
  20. 【离散数学】第二章 命题逻辑的推理理论

热门文章

  1. @async 没有异步_spring boot使用@Async异步任务
  2. JSF or PHP or ADF?!! :(
  3. Linux设备模型(热插拔、mdev 与 firmware)
  4. iOS 录音转MP3格式
  5. 模块导入---如何在一个文件中导入其它模块,来调用它的变量、函数等,以节省代码量...
  6. 修改xampp的mysql默认密码
  7. 第三部分:MFC中控件的样式
  8. vmware esxi的安装
  9. React、Vue、Angular对比 ---- 介绍及优缺点
  10. 如何读取抓取的wifi包内容