boost mutex lock学习及测试
来源:互联网 发布:mac 按文件夹排列 编辑:程序博客网 时间:2024/05/16 12:30
boost真是博大精深呀
这次学习了一下几本的锁和信号量。
其中包含:mutex recursive_mutex lock unique_lock basic_lockable_adpator timed_lockable_adpator,其他的adpator应该也都一样,例如(shared_lockable_adaptor等)
参看:http://www.boost.org/doc/libs/1_60_0/doc/html/thread/synchronization.html
#include <iostream>#include <boost/thread/thread.hpp>#include <boost/thread/mutex.hpp>#include <boost/thread/recursive_mutex.hpp>#include <boost/thread/locks.hpp>#include <boost/thread/lockable_concepts.hpp>#include <boost/thread/lockable_adapter.hpp>class BankAccount { int _balance; boost::mutex _mtx;public: BankAccount(int init = 0): _balance(init){ } void deposit(int amount) { boost::lock_guard<boost::mutex> guard(_mtx); _balance += amount; } void withDraw(int amount) { boost::lock_guard<boost::mutex> guard(_mtx); _balance += amount; } int getBalance() { boost::lock_guard<boost::mutex> guard(_mtx); return _balance; } void lock() { _mtx.lock(); } void unlock() { _mtx.unlock(); }};class A : public boost::basic_lockable_adapter<boost::mutex> {public: int _a; A(int a = 10): _a(a){ } void show() { std::cout << _a << std::endl; }};class B : public boost::basic_lockable_adapter<boost::recursive_mutex> { //可重入 即:可同一线程多次锁一个信号量public: int _a; B(int a = 10): _a(a){ } void show() { std::cout << _a << std::endl; }};class C : public boost::timed_lockable_adapter<boost::mutex> {public: int _a; C(int a = 10): _a(a){ } void show() { std::cout << _a << std::endl; }};void ATMWithDraw(BankAccount& account, int amount) {// boost::recursive_mutex; account.lock(); account.withDraw(amount); account.withDraw(2); account.unlock();}int main () { BankAccount wangbing; wangbing.deposit(100); std::cout << wangbing.getBalance() << std::endl; ATMWithDraw(wangbing, 10); A lockable_a; lockable_a.lock(); lockable_a.show(); lockable_a.unlock(); // B b; // boost::lock_guard<B> recusive_lock(b); //构造函数自动锁b //C c; //c.try_lock_until( boost::chrono::time_point); std::cout << "wangbing" << std::endl;}
g++ lock.cpp -lboost_thread -lboost_system
0 0
- boost mutex lock学习及测试
- boost mutex lock 使用
- boost中的mutex与lock
- boost中的mutex与lock
- boost同步互斥mutex lock
- mutex lock
- C#中的lock、Monitor、Mutex学习笔记
- boost mutex
- boost Mutex
- 【Boost】boost库中thread多线程详解2——mutex与lock
- 【Boost】boost库中thread多线程详解2——mutex与lock
- C#中lock,Monitor和Mutex的测试代码
- 测试boost线程锁(多读一写lock、非阻塞lock)
- C#多线程学习(九)lock,Monitor,Mutex的区别
- boost库中thread多线程详解2——mutex与lock
- boost库中thread多线程详解——mutex与lock
- boost库中thread多线程详解——mutex与lock
- 学习笔记:boost lock-free queue
- java进度条代码
- JSON example
- 解决setOnItemClickListener无响应的bug
- .NET 程序员十种必备工具
- Windows Embedded 7 Standard 裁剪过程图解教程
- boost mutex lock学习及测试
- 【经典转载】Linux进程学习系列之六 进程控制函数之exec()函数的学习
- BLE 广播数据解析
- ios开发之libcurl库的编译详细教程
- assert()函数用法总结
- 做一个合格的程序猿之浅析Spring IoC源码(六)BeanFactoryPostProcessor
- LuaPlus学习
- Android-BaseLine框架初识之如何使用(二)
- MAX方法