修正不通顺

pull/1/head
Xargin 2016-01-15 00:58:37 +08:00
parent 7aa13e3d44
commit 07c3e1c719
1 changed files with 1 additions and 1 deletions

View File

@ -83,7 +83,7 @@ func Withdraw(amount int) bool {
}
```
函数终于给出了正确的结果但是还有一点讨厌的副作用。当过多的取款操作同时执行时balance可能会瞬时被减到0以下。这可能会引起一个并发的取款被不合逻辑地拒绝。所以如果Bob尝试买一辆sports car时Alice可能就没办法为她的早咖啡付款了。这里的问题是取款不是一个原子操作它包含了三个分别的操作,每一个都需要去获取并释放互斥锁,但任何一个都不会锁上整个序列
函数终于给出了正确的结果但是还有一点讨厌的副作用。当过多的取款操作同时执行时balance可能会瞬时被减到0以下。这可能会引起一个并发的取款被不合逻辑地拒绝。所以如果Bob尝试买一辆sports car时Alice可能就没办法为她的早咖啡付款了。这里的问题是取款不是一个原子操作它包含了三个步骤,每一步都需要去获取并释放互斥锁,但任何一次锁都不会锁上整个取款流程
理想情况下,取款应该只在整个操作中获得一次互斥锁。下面这样的尝试是错误的: