Linux网络编程服务器模型之并发服务器

本文最后更新于2017年8月6日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢!

=Start=

缘由:

学习需要

正文:

参考解答:

&

参考链接:

Linux网络编程服务器模型选择之并发服务器(上)
http://www.cnblogs.com/lizhenghn/p/3617666.html

Linux网络编程服务器模型选择之IO复用循环并发服务器
http://www.cnblogs.com/lizhenghn/p/3619091.html

http://man7.org/linux/man-pages/man3/pthread_create.3.html
http://man7.org/linux/man-pages/man2/socket.2.html
http://man7.org/linux/man-pages/man2/bind.2.html
http://man7.org/linux/man-pages/man2/listen.2.html
http://man7.org/linux/man-pages/man2/select.2.html

=END=

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/3503.html

《Linux网络编程服务器模型之并发服务器》上有5条评论

  1. 通过完整示例来理解如何使用 epoll
    http://blog.jobbole.com/93566/
    https://banu.com/blog/2/how-to-use-epoll-a-complete-example-in-c/

    Linux 的 epoll(7) 机制,它是 Linux 最好的「就绪通知机制」。

    select(2) 一次可以监测 FD_SETSIZE 数量大小的描述符,FD_SETSIZE 通常是一个在 libc 编译时指定的数字(1024)。需要线性扫描所有通过描述符,时间复杂度为 O(n) 。
    poll(2) 一次可以监测的描述符数量并没有限制,但撇开其它因素,我们每次都不得不检查就绪通知,线性扫描所有通过描述符,这样时间复杂度为 O(n) 而且很慢。
    epoll 没有这些固定限制,也不执行任何线性扫描,能在O(1)时间内完成操作。因此它可以更高效地执行和处理大量事件。

  2. 漫话:如何给女朋友解释什么是BIO、NIO和AIO?
    https://mp.weixin.qq.com/s/HQd-PsnJI8TtEtAXMsjuPw

    BIO (Blocking I/O):同步阻塞I/O模式。
    NIO (New I/O):同步非阻塞模式。
    AIO (Asynchronous I/O):异步非阻塞I/O模型。

    以烧水为例进行简单说明:
    同步阻塞模式:这种模式下,我们的工作模式是先来到厨房,开始烧水,并坐在水壶面前一直等着水烧开。

    同步非阻塞模式:这种模式下,我们的工作模式是先来到厨房,开始烧水,但是我们不一直坐在水壶前面等,而是回到客厅看电视,然后每隔几分钟到厨房看一下水有没有烧开。

    异步非阻塞I/O模型:这种模式下,我们的工作模式是先来到厨房,开始烧水,我们不一一直坐在水壶前面等,也不隔一段时间去看一下,而是在客厅看电视,水壶上面有个开关,水烧开之后他会通知我。

    阻塞VS非阻塞:人是否坐在水壶前面一直等。

    同步VS异步:水壶是不是在水烧开之后主动通知人。

发表评论

电子邮件地址不会被公开。 必填项已用*标注