场景
- 在前面的文章说过C++实现synchronized方式的对象锁[1]可以实现
Java
的synchronized
易用特性。这个第一版的例子并没有说明如何删除pthread_mutex_t
对象,随着加锁的对象增加会出现内存泄漏的情况,怎么解决?
说明
-
在
C++11
提供了可复制的共享的指针std::shared_ptr
, 利用这个指针我们可以判断mutex
有没有被其他线程使用,从而释放mutex
。 -
改进版的例子使用
C++11
的<mutex>
库来创建互斥量,不使用pthread
, 读者可以自己写一个类来封装pthread_mutex_t
来替换<mutex>
。 -
gBASMapMutex
全局锁用来获取对象锁,因为全局锁保护的代码区执行很快,所以它的时间可以忽略。主要还是业务逻辑的对象锁。
void BASLock::</