天天看点

自动锁

想想这么一个函数:

这个时候,我们忘掉解锁的机会就太大了,多个return语句,以及可能出现的异常抛出。都有可能导致我们忘记了释放掉锁。以为我们要在每个return,throw前面加上一个unlock。

还有一个东西很重要,作用域。如果没有作用域,我们的程序世界不知道会带来怎样的一种不可想象的混乱。

因为作用域很重要,我们可以使用作用域的概念完成自动解锁功能

好了,这样你就只需要在你需要锁上锁的地方顶一个一个scopelock的局部变量,然后就不用管了,多好的事儿啊。

需要说明这个scopelock不是我自己发明的,来自posa卷2,《pattern oriented software architecture》,不错的一本书。

继续阅读