以下為在同步處理系統裡,執行交易(transaction)時常被執行的動作:
read_item(Ti, A, B):在交易Ti 中,讀取資料A 的內容,並將其存入資料B 中。
write_item(Ti, A, B):在交易Ti 中,將資料B 的內容寫入資料A 中。
read_lock(A):對資料A 進行鎖定,使其他交易無法對其進行讀取的動作。
write_lock(A):對資料A 進行鎖定,使其他交易無法對其進行寫入的動作。
unlock (A):解除對資料A 的鎖定。
設T1 與T2 為系統中正在被執行的兩個交易(transaction),而X 與Y 為T1 與T2 中
所共用的兩個變數。T1 與T2 之程式指令如下所示,並設在執行T1 與T2 前,X = 20;
Y = 30。請討論在執行完T1 與T2 後,變數X 與Y 會有何可能結果。(20 分)
T1
T2
read_lock(Y);
read_lock(X);
read_item (T1, Y, A);
read_item (T2, X, C);
unlock (Y);
unlock(X);
read_lock(X);
read_lock(Y);
read_item (T1, X, B);
read_item (T2, Y, D);
unlock (X);
unlock(Y);
A:=A+B;
C:=C+D;
write_lock(Y);
write_lock(X);
write_item(T1, Y, A);
write_item(T2, X, C);
unlock (Y);
unlock (X);