c++ 惯用法:定界加锁
来源:互联网 发布:网络招生 熊龙 编辑:程序博客网 时间:2024/04/28 04:10
定界加锁能确保控制进入到某一范围时,自动获取锁,而当控制离开该范围时,自动释放锁。
代码示例:
class Mutex{public: Mutex() { pthread_mutex_init(&_lock, NULL); } virtual ~Mutex() { pthread_mutex_destroy(&_lock); } void Lock() { pthread_mutex_lock(&_lock); } void Unlock() { pthread_mutex_unlock(&_lock); }private: pthread_mutex_t _lock;};class ScopedLock{public: ScopedLock( Mutex& mutex_obj ) : _mutex_obj(mutex_obj) { _mutex_obj.Lock(); } ~ScopedLock() { _mutex_obj.Unlock(); }private: Mutex& _mutex_obj;};template < class _Type >class Singleton{public: static void CreateInstance() { if ( NULL == _instance() ) { ScopedLock lock( _mutex() ); if (NULL == _instance()) { _instance() = new _Type(); } } } static _Type* GetInstance() { return _instance(); } static void DestroyInstance() { ScopedLock lock( _mutex() ); if ( _instance()) { delete _instance(); _instance() = NULL; } }protected: static Mutex & _mutex() { static Mutex m; return m; } static _Type* & _instance() { static _Type* p = NULL; return p; }};
优点:
1.增加了健壮性。
缺点:
1.递归使用可能发生死锁。
2.受与语言相关的语义的限制。
0 0
- c++ 惯用法:定界加锁
- 定界加锁模式
- C/C++惯用法
- extern "C"的惯用法
- extern "C"的惯用法
- extern "C"的惯用法
- extern "C"的惯用法
- RAII惯用法:C ++资源管理的利器
- 分支定界法 广度搜索定界 深度搜索定界
- 这里实现定界加锁线程安全的单例模式
- 分支定界法
- 分枝定界法
- 分支定界法(
- 分支定界法
- 分支定界法
- 分枝定界法
- 分支定界法总结
- Erase-remove惯用法
- 英语自勉
- IE版本判断
- 数据类型不匹配(SQLCODE=-245)
- bzoj2750 Road 最短路&记忆化搜索
- 有源晶振和无源晶振的输出波形
- c++ 惯用法:定界加锁
- 在虚幻4中显示鼠标并自定鼠标样式
- Kotlin 1.0 Released: Pragmatic Language for JVM and Android
- 2web漏扫
- Jenkins服务器安装与配置
- 使用stl中的 advance和 distance 方法来进行iterator的加减 http://blog.csdn.net/tangaowen/article/details/7515558
- 清除缓存功能
- [solr] - Facet - autocomplete
- android studio Error:Cause: peer not authenticated的解决方案