学习多线程同步之智能指针巧用
来源:互联网 发布:java web源码 编辑:程序博客网 时间:2024/05/16 15:24
muduo发明了一种技巧(不知道是不是业界常用的)
用MutexLockGuard来保护智能指针shared_ptr,以此实现类似于读写锁的功能:
shared_ptr<map<string,int> > _data;
1) 当reader要获取_data时,shred_ptr引用计数+1
2) 当writer要写_data时,判断是否当前线程是_data的唯一拥有者,如果不是,那么拷贝一份_data,更新新的_data,此时reader会读取老的那份_data
3) 在shred_ptr引用计数会加减的地方用MutexLockGuard保护
大致代码如下:
用MutexLockGuard来保护智能指针shared_ptr,以此实现类似于读写锁的功能:
shared_ptr<map<string,int> > _data;
1) 当reader要获取_data时,shred_ptr引用计数+1
2) 当writer要写_data时,判断是否当前线程是_data的唯一拥有者,如果不是,那么拷贝一份_data,更新新的_data,此时reader会读取老的那份_data
3) 在shred_ptr引用计数会加减的地方用MutexLockGuard保护
大致代码如下:
// readershared_ptr<map<string,int> > rd_data ;{ MutexLockGuard lock(mutex); rd_data = _data;}// xxx do stuffrd_data.doSomething();// writerMutexLockGuard lock(mutex);if (!_data.unique()) { shared_ptr<map<string,int> > copy_data(new map<string,int>(*_data)); _data.swap(copy_data); // _data这个智能指针所指向的内容已经换成最新的了,但是reader所拥有的那个指针其实指向的的还是老的数据}// xx do stuff_data.doSomething();
- 学习多线程同步之智能指针巧用
- C++学习之智能指针
- C++学习之auto_ptr智能指针
- c++11学习笔记之智能指针
- C++学习笔记之智能指针
- 学习笔记之智能指针简单理解
- 学习笔记之智能指针shared_ptr
- java 多线程学习笔记之 线程同步
- [Linux]多线程同步之pthread_cond_wait()学习笔记
- [Linux]多线程同步之sem_wait()学习笔记
- 智能指针:boost学习
- 智能指针学习
- C++ 智能指针学习
- Qt 智能指针学习
- Boost智能指针学习
- 智能指针学习
- Qt 智能指针学习
- 智能指针学习
- Lightoj 1057 DP
- FPGA学习资源
- 如何查看IIS并发连接数
- 使用grep 过滤logcat输出
- Oracle 查看 表, 存储过程, 触发器, 函数, 等对象定义语句
- 学习多线程同步之智能指针巧用
- NDK Java C 数据类型转换
- 机器学习_adaboost 算法
- 黑马程序员_源自梦想 Exception--异常
- 一个完整win32汇编窗口程序的分析
- Android 对SD卡下英文单词进行发音
- android中使用startActivityForResult回传数据
- 表达式类型转换问题
- 高效工作的16个好习惯