利用读写锁和智能指针来实现多线程下对资源的多个地方读和多个地方写的实现。
来源:互联网 发布:兰州知豆招聘信息 编辑:程序博客网 时间:2024/06/10 07:09
比如对于一个list<T>,我们有时需要在多个线程里对它进行访问(读操作),但在其他的线
程有可能对他进行删除和添加操作(写操作)。所以要对list进行保护。
有以下几种处理方法
1,直接对list进行加锁方式,不管是读操作还是写操作。但这样一来效率就低了。因为在只
有读操作的情况下,几个线程同时读是不需要加锁的。
2,读写锁的方式。这是最常用的方法,网上相关介绍很多。不再赘述。
3,智能指针方式。(以boost::shared_ptr为例说明)
这种方式是对第一种方式的一种优化。假定有三个线程(t1,t2,t3)需要同时读。我们首先
定义三个list<boost::shared_ptr<T> >变量sp1,sp2,sp3,然后再定义三个锁
lock1,lock2,lock3分别对sp1,sp2,sp3进行锁定操作。在对sp1,sp2,sp3读写操作时分别用各
自的锁锁定。这样一来三个线程的读操作是同时进行的。而利用智能指针来控制list里的T的
生存期。
- 利用读写锁和智能指针来实现多线程下对资源的多个地方读和多个地方写的实现。
- 后的国防和技术个地方就会个省级地方
- javaEE利用地方实现文件的上传和下载
- 找个合适的地方写博
- 发生地方多个地方个地方个梵蒂冈
- 法规和人格地方个地方哥哥
- 多线程实现对同一个或多个文件的读写操作
- 公司的个地方
- 是的个地方和的风格和规划局
- 富贵花地方个地方好的发挥独特和法规和风格
- 的个是地方后大幅改进和的风格
- 梵蒂冈的鬼地方个地方
- 多个地方
- 但个地方和反光镜
- 一个ZeroClipboard在多个地方实现复制到剪切板
- 大概的风格但如果地方个地方个地方个地方
- 多个地方同时向一个文件读写的互斥问题解决方案
- 如何利用地方论坛来做推广运营的8个经验分享
- Mysql无法创建文件/写入文件错误的解决
- 忘记敏捷
- 编程之美读书笔记3.7队列中取最大值操作的问题 解法2
- 最大公共连续子串(LCS问题)
- hdu 1142 A Walk Through the Forest(spfa+深搜)
- 利用读写锁和智能指针来实现多线程下对资源的多个地方读和多个地方写的实现。
- Object-c学习笔记十六-----文件加载与保存
- Henry拣钱(money.pas/c/cpp)
- 一步一步写算法(之非递归排序)
- Linux C之atio()函数
- iPhone中的UIActionSheet与UIAlterView
- java web开发一个帐号同一时间只能一个人登录
- Creating EXT2 USB Flash Drive from Windows
- EXT2IFS performance of VHD on my Kingston UFD