1、多线程,如果锁和对象的生命周期是同等的。那么注定在删除对象时遭遇尴尬。使用超过对象生命周期的锁。这里就是大范围的锁。面对大范围的锁,不一定需要敬而远之。得看它的影响。我们实际上唯一无法保障的就是在对象删除之后还在使用对象的锁。
A: check lock check doing unlock
B: lock setdeleted unlock destroylock
2、许多实际的情况,可以归纳、合并。抽象、简化。建立一种理论模型。在这个层次上研究问题会更清楚、直观。
3、对象使用锁。删除对象。使用在删除之前那么就应该完全是不会有问题的。这里都是从开始锁的那一刻算起。有争议的情况是,开始了删除操作。这个时候我们检查对象时发现对象依然是存在的。这个时候我们就被
锁住了。
锁在解开后会有什么样的情况发生。是直接走到destroy 或者还是先解锁其他的线程。这之间有什么样的过程,删除一个对象时如果等待了,那么情况可能就不同了。对象没有被彻底删除。它所设立的标志还在。这个时候锁可能还没有被删除。删除锁会解锁吗?
4、pthread_mutex_trylock() 有这样一个锁,可以用于测试是否有其他的对象想要进入,如果有返回ebusy。可以在destory 使用前来测试一下。然后使用。
阅读(772) | 评论(0) | 转发(0) |