『阿男教你玩Concurrent Programming』*学习的脉络(1)*

『阿男教你玩Concurrent Programming』*学习的脉络(1)*

大家觉得并发编程学习起来很难,其实这块主要是知识体系比较庞大,设计比较多,理论学习比较漫长,找到一个学习的脉络,学习起来就不难。阿男这里给大家先梳理一下。

首先我们要明白并发编程要解决什么问题。所谓并发,本质上就是指,同时有多个worker在工作,这些workers可能在做同一个task,也可能在做不同的task。此外,如果是多个tasks,那么这些tasks,可能相互之间有关联,也可能没有关联。

那么我们把上面所说的场景详细划分一下。首先是最简单的,一个worker,一个task,这种就谈不上并发了,就是一个线性的一个人的独立工作。这个就没什么可讲的。

接下来是多个workers,做多个tasks,但是多个tasks之间毫无关联,这个也没什么可讲的,就相当于各个worker做各自手里毫不相关的task,一个个都是孤岛,那么也和之前一个worker,一个task本质上是一样的。就算是每个worker手里有多个tasks,如果worker手里的task互相不相关,那也是一样的情况。

最后一种情况是我们要考虑的,其实是两种情况,就是多个workers对应一个task,或者对应多个tasks,但是多个tasks之间有关联性。

这两种情况涉及到两个问题:第一个问题,多个workers之间如何协调执行顺序?如果执行顺序错误,很可能任务失败,这里面涉及到任务本身的逻辑。

第二个问题是,多个workers之间如何不冲突地使用资源?因为多个workers可能在执行一个任务,这个任务里面涉及的到的资源是共享的,而这些资源可能不能同时交给多个workers去使用,否则可能会产生逻辑错误。还有就是如果多个tasks之间有关联性,那么它们的资源也可能有关联性,可能在使用方面也是有顺序性和独占性。

因为,并发编程所有的理论,实现,设计模型,就是要解决这两个问题:协调并发执行循序协调资源的使用

转载于:https://my.oschina.net/u/3195023/blog/836070

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值