boost::thread编程-共享互斥量
来源:互联网 发布:mac一直显示flash过期 编辑:程序博客网 时间:2024/06/06 11:03
共享互斥量shared_mutex允许线程获取多个共享所有权shared_lock和一个专享所有权uique_lock,实现了读写锁机制,即多个读线程一个写线程。
#include "stdafx.h"#include <iostream>#include <boost/thread.hpp>#include <boost/atomic.hpp>boost::mutex io_mu;//io读写锁class rw_data{public:rw_data():m_x(0){}//构造函数void write()//写数据{boost::unique_lock<boost::shared_mutex> ul(rw_mu);//写锁定,使用unique_lock<shared_mutex>++m_x;}void read(int *x)//读数据{boost::shared_lock<boost::shared_mutex> sl(rw_mu);//读锁定,使用shared_lock<shared_mutex>*x=m_x;}private:int m_x;//用于读写的数据变量boost::shared_mutex rw_mu;//共享互斥量};//定义用于线程执行的多次读写函数void writer(rw_data &d){for(int i=0;i<10;++i){boost::this_thread::sleep(boost::posix_time::millisec(10));//休眠d.write();}}void reader(rw_data &d){int x=0;for(int i=0;i<10;++i){boost::this_thread::sleep(boost::posix_time::millisec(5));//休眠d.read(&x);boost::mutex::scoped_lock lock(io_mu);//锁定IOstd::cout<<"reader:"<<x<<std::endl;}}int _tmain(int argc, _TCHAR* argv[]){rw_data d;boost::thread_group tg;tg.create_thread(boost::bind(reader,boost::ref(d)));tg.create_thread(boost::bind(reader,boost::ref(d)));tg.create_thread(boost::bind(reader,boost::ref(d)));tg.create_thread(boost::bind(reader,boost::ref(d)));tg.create_thread(boost::bind(writer,boost::ref(d)));tg.create_thread(boost::bind(writer,boost::ref(d)));tg.create_thread(boost::bind(writer,boost::ref(d)));tg.create_thread(boost::bind(writer,boost::ref(d)));tg.join_all();getchar();return 0;}
0 0
- boost::thread编程-共享互斥量
- Boost Thread编程指南
- Boost Thread 编程指南
- Boost Thread 编程指南、Boost线程入门教程
- C++ Boost Thread 编程指南
- C++ Boost Thread 编程指南
- C++ Boost Thread 编程指南
- C++ Boost Thread 编程指南
- C++ Boost Thread 编程指南
- C++ Boost Thread 编程指南
- C++ Boost Thread 编程指南
- C++ Boost Thread 编程指南
- C++ Boost Thread 编程指南
- C++ Boost Thread 编程指南
- C++ Boost Thread 编程指南
- C++ Boost Thread 编程指南
- C++ Boost Thread 编程指南
- C++ Boost Thread 编程指南
- linux相关命令
- 经典排序算法 - 桶排序Bucket sort
- Findbugs 使用备忘录
- 那些电影程序员必看
- Ext.XTemplate2
- boost::thread编程-共享互斥量
- java和c+的webservice互调用
- 经典排序算法 – 插入排序Insertion sort
- Oracle EBS应用服务器节点平台迁移的方法论
- 经典排序算法 - 基数排序Radix sort
- 左偏树(Leftist Tree)的合并
- 在云端存储Apache Hadoop的数据--HDFS vs S3
- 经典排序算法 - 鸽巢排序Pigeonhole sort
- 经典排序算法 - 归并排序Merge sort