saga转账的lock

saga中lock money字段时,目的是怕别人更改,这个可以不通过“语言本身或框架本身”实现,而是通过普通的方法达到。伪代码如下:



// saga 转账方法
function transfer(fromId, toId, money) {

// 略一些东东

var fromUser = this.mix(u1, fromRole);
// dci 方式得到 from角色
var toUser = this.mix(u2, toRole);
// to 角色

fromUser.deduct(money);
toUser.recharge(money);

}


这里的 deduct/recharge 角色方法调用时,会先 lock money字段,操作后放开,这里的放开是操作成功和失败都会unlock。

请各位予以批评指正,嘎嘎。

关键是如何保证transfer这个方法的原子性