boost之mutex scoped_lock

1.boost里的互斥量类型由mutex表示。

代码示例:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

#include <iostream>

#include <string>

#include <vector>

#include <boost/thread.hpp>

#include <boost/thread/mutex.hpp>

using namespace std;

using namespace boost;

int main()

{

    mutex mu;

    try

    {

        this_thread::sleep(posix_time::seconds(2));

        mu.lock();//锁定cout对象

        cout << "Some operations" <<endl;

        mu.unlock();

    }

    catch(int)

    {

        mu.unlock();

        return 0;

    }

    

}

二.上面的代码好像似曾相识,是的,在防止内存泄露的时候采用的和上面类似的处理方式,更加简洁的方式是智能指针,类似的我们需要用智能锁改写上面的代码scoped_lock智能锁。


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

#include <iostream>

#include <string>

#include <vector>

#include <boost/thread.hpp>

#include <boost/thread/mutex.hpp>

using namespace std;

using namespace boost;

template<typename T>

class basic_atom:noncopyable

{

private:

    T n;

    typedef mutex mutex_t;

    mutex_t mu;

public:

    basic_atom(T x = T()):n(x){}

    T operator++()

    {

        mutex_t::scoped_lock lock(mu);

        return ++n;

    }

    operator T(){return n;}

};

int main()

{

    return 0;

    

}

boost之mutex scoped_lock

时间: 2024-10-11 05:06:27

boost之mutex scoped_lock的相关文章

boost库中thread多线程详解2——mutex与lock

1. mutex对象类 mutex类主要有两种:独占式与共享式的互斥量.▲ 独占式互斥量:mutex: 独占式的互斥量,是最简单最常用的一种互斥量类型try_mutex: 它是mutex的同义词,为了与兼容以前的版本而提供timed_mutex: 它也是独占式的互斥量,但提供超时锁定功能▲ 递归式互斥量:recursive_mutex: 递归式互斥量,可以多次锁定,相应地也要多次解锁recursive_try_mutex: 它是recursive_mutex 的同义词,为了与兼容以前的版本而提供

boost mutex 应用

#include <boost/thread/mutex.hpp> 疑惑:定义为全局的还是定义为局部,性能方面如何 boost::mutex mutex; mutex.lock() do something mutex.unlock();

BOOST 线程完全攻略

1 创建线程 首先看看boost::thread的构造函数吧,boost::thread有两个构造函数: (1)thread():构造一个表示当前执行线程的线程对象: (2)explicit thread(const boost::function0& threadfunc):      boost::function0可以简单看为:一个无返回(返回void),无参数的函数.这里的函数也可以是类重载operator()构成的函数:该构造函数传入的是函数对象而并非是函数指针,这样一个具有一般函数特

boost之ThreadPool

boost之ThreadPool 版权声明:本文为博主原创文章,未经博主允许不得转载. threadpool是基于boost库实现的一个线程池子库,但线程池实现起来不是很复杂.我们从threadpool中又能学到什么东西呢? 它是基于boost库实现的,如果大家对boost库有兴趣,看看一个简单的实现还是可以学到点东西的. threadpool基本功能 1.任务封装,包括普通任务(task_func)和优先级任务(prio_task_func). 2.调度策略,包括fifo_scheduler(

BOOST线程详解

线程的中断点 thread::join myThread::join调用这个方法的线程进入wait状态,直到myThread代表的线程完成 thread::try_join_forthread::try_join_until 阻塞等待一定的时间段     condition_variable_any::wait wait(mu) condition_variable_any::wait_forcondition_variable_any::wait_until       condition_v

boost::asio::io_service(之一)

boost::asio::io_service /// Provides core I/O functionality. /** * The io_service class provides the core I/O functionality for users of the * asynchronous I/O objects, including: * io_service类为下面的异步对象提供了核心的I/O操作函数 * * @li boost::asio::ip::tcp::socke

boost::thread类

前言 标准C++线程即将到来.预言它将衍生自Boost线程库,现在让我们探索一下Boost线程库. 几年前,用多线程执行程序还是一件非比寻常的事.然而今天互联网应用服务程序普遍使用多线程来提高与多客户链接时的效率:为了达到最大的吞吐量,事务服务器在单独的线程上运行服务程序:GUI应用程序将那些费时,复杂的处理以线程的形式单独运行,以此来保证用户界面能够及时响应用户的操作.这样使用多线程的例子还有很多. 但是C++标准并没有涉及到多线程,这让程序员们开始怀疑是否可能写出多线程的C++程序.尽管不可

C++ 系列:Boost Thread 编程指南

转载自:http://www.cppblog.com/shaker/archive/2011/11/30/33583.html 作者: dozbC++ Boost Thread 编程指南0 前言1 创建线程2 互斥体3 条件变量4 线程局部存储5 仅运行一次的例程6 Boost线程库的未来7 参考资料:0 前言 标准C++线程即将到来.CUJ预言它将衍生自Boost线程库,现在就由Bill带领我们探索一下Boost线程库.就在几年前,用多线程执行程序还是一件非比寻常的事.然而今天互联网应用服务程

Boost.Asio基础(五) 异步编程初探

异步编程 本节深入讨论异步编程将遇到的若干问题.建议多次阅读,以便吃透这一节的内容,这一节是对整个boost.asio来说是非常重要的. 为什么需要异步 如前所述,通常同步编程要比异步编程更简单.同步编程下,我们很容易线性地对问题进行考量,函数A调用完,继续执行B,B执行完,继续执行C,以此类推,相对比较直观.而对于异步编程,假设有5个事件,我们很难知道它们具体的执行顺序,你甚至不知道,它到底会不会被执行. 虽然编写异步的程序,很难,但是依然需要使用这种方法.因为服务器程序需要同时并行的处理大量