加锁的部分是很简单的,只是一个操作。但是解锁,就需要考虑一些极端情况。
1、解锁前发生断电
解决:加锁时同时设置超时时间。注意加锁和设置超时时间必须是一个原子操作完成,否则仍然会有相同问题。
2、解锁前,锁已经超时释放
解决:在加锁的时候设置一个特征值,在解锁的时候检查下是否这个特征值是否时自己设置的那个,如果是,才调用释放锁的方法。注意检查特征值和释放锁必须在一个原子操作完成,否则同样会出现这个问题。
加锁的部分是很简单的,只是一个操作。但是解锁,就需要考虑一些极端情况。
解决:加锁时同时设置超时时间。注意加锁和设置超时时间必须是一个原子操作完成,否则仍然会有相同问题。
解决:在加锁的时候设置一个特征值,在解锁的时候检查下是否这个特征值是否时自己设置的那个,如果是,才调用释放锁的方法。注意检查特征值和释放锁必须在一个原子操作完成,否则同样会出现这个问题。