很多人居然以为selectpollepoll是用来实现后台服务并发的?

xiaoxiao2021-02-28  51

     网上资料,很多都是以讹传讹,到处复制粘贴,不可尽信。 我们需要有自己的判断。

  

      来说说后台服务模型:

     1.  迭代服务器

       简单说,就是在while中循环accept, 然后处理。显然, 这种服务是没有并发功能的, 后一个请求必须等前一个请求处理完毕, 才会被处理。

     2.  多线程模型

       简单说, 在while循环中循环accept,  然后开启线程来应对每一个请求, 而非在主线程执行阻塞处理操作, 让后一个请求苦苦等待。此时,服务有了并发处理能力。 (实际中的服务, 肯定不会为每个请求都搞一个线程的)

     3. 多进程模型

       简单说, 就是在父进程中循环accept,  然后开启子进程来应对每一个请求, 而非在主进程执行阻塞处理操作,让后一个请求苦苦等待。此时,服务有了并发处理能力。(实际中的服务, 肯定不会为每个请求都搞一个进程的)

     4. select/poll/epoll

       确实有很多地方说select/poll/epoll并发, 这是多么扯淡啊, 它们不过是多路复用, 而已。 很多网上程序给出的epoll代码实现的服务器, 其实是没有并发能力的, 也仅仅是迭代服务器。

       select/poll/epoll的作用是IO复用, 要实现并发, 还是需要交个其他线程/进程去处理。 业界很多成熟的服务组件, 就是这么玩的, 如nginx.

 

        所以,再说一次, select/poll/epoll没有并发能力, 仅仅是IO多路复用而已。 

        那么,IO复用, 复用的是什么呢? 复用的是, 同一个线程!!!

 

 

 

 

涛歌依旧 认证博客专家 排名第一 点链接学人工智能 公众号免费领资料 ❤️零基础入门进阶人工智能 ❤️欢迎关注涛哥公众号,免费领海量学习资料。涛哥:毕业后就职于华为和腾讯。微信:ai_taogeyijiu
转载请注明原文地址: https://www.6miu.com/read-2614130.html

最新回复(0)