27、深入理解并发编程:死锁、并行、Goroutine与通道

深入理解并发编程:死锁、并行、Goroutine与通道

1. 死锁的概念与解决方法

死锁是并发编程中常见的问题。以在eBay上的交易为例,假设Mary想出售一台不再使用的电脑,Pete想从她那里购买,但他们住在不同的州。Mary要收到Pete的钱才会发货,而Pete要收到电脑并确认符合预期才会付款。这样,交易就陷入了死锁,因为双方都在等待对方先完成自己的部分。

死锁会导致不同进程执行时出现意外行为和错误。不过,有一些技术可以避免死锁:
- 打破条件规则 :操作系统可以实施规则来打破无抢占规则,即强制任何进程释放任何资源,避免进程无限期持有资源。但不能打破互斥规则,因为它是并发的本质,操作系统必须尊重互斥。
- 检测与恢复 :操作系统识别死锁并使用特定规则从中恢复。

2. 并行性的概念与实现

并行性是指同时执行多个任务的过程。例如,一个能容纳六个汉堡的烤架可以同时烤制六个汉堡,因为每个汉堡的烤制过程相互独立。在计算领域,并行性是指利用多个处理器或硬件资源同时执行多个独立任务,也就是多处理。例如,四核处理器包含四个处理器,可同时执行四条计算机指令。

随着计算机系统的发展和硬件价格的下降,计算机系统开始包含多个处理器,将指令分布在不同处理器上以加速计算机程序的执行。但并行计算中,不同处理器共享同一内存,可能会导致类似并发的问题。比如,处理器A在对某个内存位置进行读写操作时,需要防止其他处理器访问该位置;两个处理器也可能同时访问打印机。

为防止并行处理器出现并发问题,有两种选择:
- 为每个处理器创建完全独立的资源,包括

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值