mirror of
https://github.com/gopl-zh/gopl-zh.github.com.git
synced 2024-11-05 05:53:45 +00:00
commit
97c96badd5
@ -40,11 +40,11 @@ go bank.Deposit(100) // B
|
||||
Alice存了$200,然后检查她的余额,同时Bob存了$100。因为A1和A2是和B并发执行的,我们没法预测他们发生的先后顺序。直观地来看的话,我们会认为其执行顺序只有三种可能性:“Alice先”,“Bob先”以及“Alice/Bob/Alice”交错执行。下面的表格会展示经过每一步骤后balance变量的值。引号里的字符串表示余额单。
|
||||
|
||||
```
|
||||
Alice first Bob first Alice/Bob/Alice
|
||||
0 0 0
|
||||
A1 200 B 100 A1 200
|
||||
A2 "=200" A1 300 B 300
|
||||
B 300 A2 "=300" A2 "=300"
|
||||
Alice first Bob first Alice/Bob/Alice
|
||||
0 0 0
|
||||
A1 200 B 100 A1 200
|
||||
A2 "= 200" A1 300 B 300
|
||||
B 300 A2 "= 300" A2 "= 300"
|
||||
```
|
||||
|
||||
所有情况下最终的余额都是$300。唯一的变数是Alice的余额单是否包含了Bob交易,不过无论怎么着客户都不会在意。
|
||||
|
Loading…
Reference in New Issue
Block a user