AtomicityXferall or nothing putall or nothing getsalvageAtomicity Barbara LiskovMIT CSAILApril 2007Xfer xfer(A, B, amt)A <- A – amt;B <- B + amt;all or nothing putall_or_nothing_put(data,X)flag <- careful_get(X.D0,buff);if flag = ok { careful_put(X.D1,data); careful_put(X.D0,data); }else { careful_put(X.D0,data); careful_put(X.D1,data); }all or nothing getall_or_nothing_get(data,X)flag <- careful_get(X.D0,data);if flag = ok return;careful_get(X.D1,data);salvagesalvage(X)flag0<- careful_get(X.D0,buff0);flag1 <- careful_get(X.D1, buff1);if (flag0 = bad) {careful_put(X.D0,buff1);}if (flag1 = bad) {careful_put(X.D1,
View Full Document