x86 单线并发多拨_Socket Server的N种并发模型汇总

      本文主要介绍常见的Server的并发模型,这些模型与编程语言本身无关,有的编程语言可能在语法上直接透明了模型本质,所以开发者没必要一定要基于模型去编写,只是需要知道和了解并发模型的构成和特点即可。

    在了解并发模型之前,我们需要两个必备的前置知识:

  • socket网络编程

  • 多路IO复用机制

  • 多线程/多进程等并发编程理论


提纲

模型一

单线程Accept(无I/O复用)

模型二

单线程Accept+多线程读写业务(无I/O复用)

模型三

单线程多路I/O复用

模型四

单线程多路I/O复用+多线程读写业务(业务工作池)

模型五

单线程多路I/O复用+多线程多路I/O复用(线程池)

模型五(进程版)

单进程多路I/O复用+多进程多路I/O复用(进程池)

模型六

单线程多路I/O复用+多线程多路I/O复用+多线程


模型一、单线程Accept(无I/O复用)

01

模型结构图
392715e653bb7a7677fd4152a0ba031d.png

02

模型分析① 主线程 main thread执行阻塞Accept,每次客户端Connect链接过来, main thread中accept响应并建立连接② 创建链接成功,得到 Connfd1套接字后, 依然在 main thread串行处理套接字读写,并处理业务。③ 在②处理业务中,如果有新客户端 Connect过来, Server无响应,直到当前套接字全部业务处理完毕。④ 当前客户端处理完后,完毕链接,处理下一个客户端请求。

03

优缺点 优点:
  • socket编程流程清晰且简单,适合学习使用,了解socket基本编程流程。

缺点:
  • 该模型并非并发模型,是串行的服务器,同一时刻,监听并响应最大的网络请求量为1。即并发量为1

  • 仅适合学习基本socket编程,不适合任何服务器Server构建。


模型二、单线程Accept+多线程读写业务(无I/O复用)

01

模型结构图

5aaf59f126a9d65694505f61497bbc5c.png

02

模型分析① 主线程 main thread执行阻塞Accept,每次客户端Connect链接过来, main thread中accept响应并建立连接② 创建链接成功,得到 Connfd1套接字后,创建一个新线程 thread1用来处理客户端的读写业务。 main thead依然回到
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值