我是靠谱客的博主 寂寞河马,最近开发中收集的这篇文章主要介绍boost互斥锁_boost mutex以及scoped_lock应用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

boost::mutex提供了跨平台的锁操作,不允许多个线程同时访问共享资源,从而确保共享资源不被脏写。在本文中仅仅是介绍简单的两种锁,最高效的锁boost::mutex和区域锁boost::mutex::scoped_lock

boost::mutex例子

#include

boost::mutex m_mutexAccessServiceManager;

void CSettingCenter::ClearPlatformServiceInfoCache()

{

m_mutexAccessServiceManager.lock();

m_mapAccessServiceManager.clear();

m_mutexAccessServiceManager.unlock();

}

区域锁boost::mutex::scoped_lock顾名思义就是在作用域内有效,当离开作用域自动释放锁,传递参数是锁。区域锁就是把锁封装到一个对象里面。锁的初始化放到构造函数,锁的释放放到析构函数。这样当锁离开作用域时,

析构函数会自动释放锁。即使运行时抛出异常,由于析构函数仍然会自动运行,所以锁仍然能自动释放。一个典型的区域锁

void test()

{

boost::mutex::scoped_lock lock(m_mutexAccessServiceManager);

m_mapAccessServiceManager.clear();

}

应用于有大量的return返回的代码,避免出现死锁的问题

扩展

std::scoped_lock提供了可变参数长度的构造器,接收多个锁。允许在可能

最后

以上就是寂寞河马为你收集整理的boost互斥锁_boost mutex以及scoped_lock应用的全部内容,希望文章能够帮你解决boost互斥锁_boost mutex以及scoped_lock应用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部