grandoph 您好:
先解释字眼,怕误会。
唐筝口中讲“Abort”,我比较喜欢用“Roll Back”,
中文都是指“撤销交易”的意思。
就像“水平、光盘、鼠标”听起来会怪怪的,还是讲“水准、光盘、
鼠标”听起来会好些。
只是用字比较精准而已,指的是同一个东西。随意。
再来,回答你问的问题。
第一个问题:是,直接写 roll back,或写“撤销交易”也行。
第二个问题:
“有”比我晚已经做过交易了,我(优先权低的)要roll back
“没有”比我晚:我做交易
算法中,“早、晚”,间接意思,就是“早优先权低、晚优先权高”。
但你硬要套优先权高、优先权低,会很痛苦,不如迎合算法原著的想法,
他的想法就只有“时间早、时间晚”。
底下举一个简单的例子,请开电脑看,用手机 Mo PTT 请“切换到整页模式”
排版才不会乱掉:
题目
步骤 | T1 | T2
=====================
1 | read |
2 | | read
3 | write |
4 | | write
T1、T2 都对同一标的物 x 做动作。
拟答(括号内的字是提醒,不属于答案):
(先观察,T1 在第一步就先执行,T2 比较晚,在第二步,所以等一下假设时间早晚
要按照 T1 < T2)
设
T1 时戳 = 7
T2 时戳 = 12
(随便给,T1 早,T2 晚就好)
令
R 为成功“读取”资料 x 的交易中,时戳最大者。
W 为成功“写入”资料 x 的交易中,时戳最大者。
(R、W 两个一开始为 0)
(好了,开始做题目,为了容易读,我把题目复制下来,省得卷上去回头看,麻烦。)
步骤 | T1 | T2
=====================
1 | read |
2 | | read
3 | write |
4 | | write
第 1 步,T1 做 read
W=0 <= T1=7 (看看我 T1 是不是最晚)
W 没比 T1 更晚,可以执行。此时:
R=7,W=0
步骤 | T1 | T2
=====================
1 | read |
2 | | read
3 | write |
4 | | write
第 2 步,T2 做 read
W=0 <= T2=12 (看看我 T2 是不是最晚)
W 没比 T2 更晚,可以执行。此时:
R=12,W=0
步骤 | T1 | T2
=====================
1 | read |
2 | | read
3 | write |
4 | | write
第 3 步,T1 做 write
R=12 <= T1=7 (看看我 T1 是不是最晚)
W=0 <= T1=7 (看看我 T1 是不是最晚)
“R=12 <= T1=7 条件不符”代表 R 比 T1 更晚,不准执行。此时:
我 T1 只好 roll back,因为没有执行,值不变 R=12,W=0
(这时,撤就撤了,不用去管什么 wait die wound wait)
步骤 | T1 | T2
=====================
1 | read |
2 | | read
3 | write |
4 | | write
第 4 步,T2 做 write
R=12 <= T2=12 (看看我 T2 是不是最晚)
W=0 <= T2=12 (看看我 T2 是不是最晚)
R、W 没人比 T2 更晚,可以执行。此时:
R=12,W=12
最后结果,T1 交易撤回。T2 执行。
如果让你转不过来:数字大的,优先权高。
这样 ok 吗?
※ 编辑: fcouple (211.76.33.33), 03/24/2015 09:47:16