技术 - 任务并发 - 两类并发模型

两类并发模型

如需转载请注明出处:http://blog.csdn.net/qingyixiaoxia 

一   两类并发模型

并发的各个任务之间协作的方式有两种:

第一种,并发任务对彼此成开放的白盒状态,可以通过直接的调用,来访问彼此的数据或者方法;

第二种,并发任务对彼此成封闭的黑盒状态,彼此只能通过消息交互,来触发对数据或方法的使用;

这第二种任务协作模式下,对隶属于各个并发任务的临界数据,它们的访问也被消息封装给串行化了,从而可免于考虑互斥问题。

注意:对未经消息封装保护的公共的临界数据,其多任务访问依然是并发的,依然需要互斥保护。

对两种并发任务协作模型,作者分别名之曰小白盒并发模型,和小黑盒并发模型。

两种模型对比示意如下:

二   小白盒并发模型

说明:

小白盒模型是各种并发模型的始祖和基础。大家在最初进行线程编程时,基本都是从小白盒模型开始的。

1.   模型描述:

小白盒模型是在各个软件组件的实现过程中,在”需要的时候”,启动独立的线程。这些独立的线程在运行中,其调用轨迹可以贯穿所有的软件组件。所以每个软件组件都要考虑其临界资源可能被并发访问的问题。要解决这个问题,最惯常的手段就是Mutex加解锁。

2.   优缺点:

优点:该模型用来无需过多的并发设计上的思考,简单易懂。

缺点:该模型仅仅适用于小型软件。对大型软件,过多的锁会引入相应的软件复杂度,而过多锁的使用又会引入难以排查的效率瓶颈;

3.  特别的:

并发设计中,除了互斥设计,还有线程间协作时序的设计。可以通过互斥锁来协调线程间时序关系,也可以通过条件变量等来协调线程间时序关系。

三   小黑盒并发模型

说明:

小黑盒模型有比较强的并发设计感,适用于大型的软件。

1.   模型描述:

小黑盒并发模型是将不同的软件组件用task封装起来,各个软件组件之间限定不可以直接互调,只能以收发消息的方式来调用彼此。小黑盒模型本质上时一种简化版的进程同步模型。

2.   优缺点:

优点:不同软件组件间不存在同步和互斥访问的问题。理论上,一个软件模块的某条运行路线中,永远不会直接调用到另外一个软件组件的方法,也永远不会直接访问到另外一个软件组件的数据。所以,理论上,可以做到不同软件组件的临界数据是被串行访问的,从而也就不需要繁琐的加解锁操作了。或者至少,某个软件组件无需考虑其持有的临界数据,可能被其他组件去并行访问的问题。

缺点:组件件通过繁琐的消息收发来通信。发送消息,等待回复,显然不比直接的API调用简单直观。加之消息队列等机制,会引入编程上和分析上额外的复杂度。搞不好也会带来一定的效率下降。

如需转载请注明出处:http://blog.csdn.net/qingyixiaoxia  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值