两种高效的并发模式

前言

  我们都知道,并发编程的目的是让程序“同时”执行多个任务,提高效率。当一个程序是计算密集型的时,并发编程并没有优势,反而由于任务的切换时效率降低。但是,当一个程序是IO密集型时,采用并发编程会极大地提高cpu的利用率。因为IO操作的速度远远小于cpu的计算速度,所以让程序阻塞与IO操作上会浪费大量的CPU时间。而并发编程可以让阻塞于IO操作的线程主动放弃CPU,将执行权转移到其他线程。
  
  下面,我们主要来讲一下并发模式,即IO处理单元和多个逻辑单元之间协调完成任务的方法。而在服务器上,主要有两种并发模式。一种是:半同步/半异步模式(half-sync/half-async)和领导者-追随者模式(Leader/Followers)。

简单认识

关于这两个模式有两个很形象的比喻:
半同步/半异步(half-sync/half-async)
  许多餐厅使用 半同步/半异步 模式的变体。例如,餐厅常常雇佣一个领班负责迎接顾客,并在餐厅繁忙时留意给顾客安排桌位,为等待就餐的顾客按序排队是必要的。领班由所有顾客“共享”,不能被任何特定顾客占用太多时间。当顾客在一张桌子入坐后,有一个侍应生专门为这张桌子服务。
领导者/追随者(Leader/Followers)
  在日常生活中,领导者/追随者模式用于管理许多飞机场出租车候车台。在该用例中,出租车扮演“线程”角色,排在第一辆的出租车成为领导者,剩下的出租车成为追随者。同样,到达出租车候车台的乘客构成了必须被多路分解给出租车的事件,一般以先进先出排序。一般来说,如果任何出租车可以为任何顾客服务,该场景就主要相当于非绑定句柄/线程关联。然而,如果仅仅是某些出租车可以为某些乘客服务,该场景就相当于绑定句柄/线程关联。

半同步/半异步模式(half-sync/half-async)

并发模式中,同步与异步的概念

  并发编程中的同步与异步的概念和IO模型中的完全不同。
  在IO模型中,同步和异步区分的是内核向应用进程通知的是就绪事件(同步)还是完成事件(异步)

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值