• 高性能服务器程序框架


    I/O模型:

    阻塞I/O:针对阻塞I/O执行的系统调用可能因为无法立即完成而被操作系统挂起,直到等待的事件发生为止。针对非阻塞I/O执行的系统调用总是立即返回,而不管事件是否已经发生,如果事件没有立即发生,这些系统调用返回-1,和出错的情况一样。显然只有在事件已经发生的情况下操作非阻塞I/O才能提高程序的效率,因此,非阻塞I/O通常要和其他I/O通知机制一起使用,比如I/O复用和SIGIO信号

    I/O复用:应用程序通过I/O复用函数向内核注册一组事件,内核通过I/O复用函数把其中就绪的事件通知给应用程序,常用的I/O复用函数是select、poll和epoll.I/O复用函数本身是阻塞的,它们能提高程序效率的原因在于它们具有同时监听多个I/O事件的能力。

    SIGIO信号:信号触发读写就绪事件,用户程序执行读写操作,程序没有阻塞阶段

    以上三种I/O模型都是同步I/O模型,I/O的读写操作,都是在I/O事件发生之后,由应用程序来完成的。异步I/O机制,内核执行读写操作并触发读写完成事件,程序没有阻塞阶段。

    两种高效的事件处理模式:

    reactor模式:主线程(I/O处理单元)只负责监听文件描述符上是否有事件发生,有的话就立即将该事件通知工作线程,除此之外,主线程不做任何其他实质性的工作,读写数据、接受新的连接以及处理客户请求均在工作线程中完成。

    proactor模式:所有I/O操作都交给主线程和内核来完成,工作线程仅仅负责业务逻辑

  • 相关阅读:
    使用spine骨骼动画制作的libgdx游戏
    【翻译】针对多种设备定制Ext JS 5应用程序
    【翻译】Ext JS最新技巧——2015-1-2
    Libgdx1.5.3发布
    Solr创建Core的两种方法
    Solr 7.7.0 部署到Tomcat
    CentOS7下安装JDK详细过程
    Linux常用命令总结
    Redis protected-mode属性解读
    使用RedisDesktopManager工具,解决连接失败问题
  • 原文地址:https://www.cnblogs.com/ljygoodgoodstudydaydayup/p/5363673.html
Copyright © 2020-2023  润新知