CopyOnWrite容器
来源:互联网 发布:淘宝奖池怎么设置 编辑:程序博客网 时间:2024/06/10 05:34
设计思路:
在修改容器的时候,先将原来的内容copy到一个新容器里,然后在新容器里进行修改,修改成功之后,将容器指针指向新容器指针。
这是一种读写分离的方法,读和写不同的容器。
这样做的好处是我们可以对CopyOnWrite容器进行并发的读,而不需要加锁,因为当前容器不会添加任何元素。
示例代码:
#include <pthread.h>#include <map>template<class K, class V>class CopyOnWriteMap{private: std::map<K, V> *internalMap; pthread_mutex_t lock;public: CopyOnWriteMap() { internalMap = new std::map<K, V>(); pthread_mutex_init(&lock, NULL); } ~CopyOnWriteMap() { delete internalMap; pthread_mutex_destroy(&lock); } void put(K key, V value) { pthread_mutex_lock(&lock); std::map<K, V> *writeMap = new std::map<K, V>(*internalMap); writeMap->insert(std::pair<K, V>(key, value)); std::map<K, V> *tmp = internalMap; internalMap = writeMap; delete tmp; pthread_mutex_unlock(&lock); } V get(K key) { return internalMap[key]; } };
CopyOnWrite容器有很多优点,但是同时也存在两个问题,即内存占用问题和数据一致性问题。所以在开发的时候需要注意一下。
ref:coolshell
0 0
- CopyOnWrite容器
- CopyOnWrite容器
- CopyOnWrite容器
- CopyOnWrite容器
- Java中的CopyOnWrite容器
- Java中的CopyOnWrite容器
- Java中的CopyOnWrite容器
- Java中的CopyOnWrite容器
- Java中的CopyOnWrite容器
- CopyOnWrite容器使用总结
- Java中的CopyOnWrite容器
- 并发容器CopyOnWrite
- Java中的CopyOnWrite容器
- 高并发容器--CopyOnWrite
- Java中的CopyOnWrite容器
- Java中的copyOnWrite容器
- CopyOnWrite容器理解
- ConcurrentHashMap以及CopyOnWrite容器浅谈
- 网传的金融行业薪酬
- Android 向右滑动销毁(finish)Activity, 随着手势的滑动而滑动的效果
- 考数据库系统会用到的一些计算方法和题目整理(2)
- Hibernate连接SQL Server(非默认实例)URL配置
- Struts2中值栈的理解【转】
- CopyOnWrite容器
- 如何使用10M的内存读入100M的文件,并且保证在读取过程中可进行删除、修改和增加内容
- Silverlight中使用枚举变量载入页面的下拉菜单(WPF)
- 一次CTS引发的网络故障
- 数据结构之队列(链式队列)
- ACM日历题新版(界面修改+国际节日)(空)
- gerrit安装笔记
- oracle 增删改查基础操作 及rownum 和rowID 详解
- CC2014中国互联网版权保护行动计划启动