Linux读写锁

陈杰杰8个月前嵌入式Linux24

读写交叉锁:


头文件

#include <boost/thread/shared_mutex.hpp>


声明  

static boost::shared_mutex cmdvelSharedMutex_;


定义  

boost::shared_mutex MotionRunParam::currentPoseSharedMutex_;


读写  

AGV_Pos GetRealPos()
{
    boost::shared_lock<boost::shared_mutex> readLocker(currentPoseSharedMutex_);
    return RealPos;
}
void SetRealPos(const AGV_Pos& currentPose)
{
    boost::unique_lock<boost::shared_mutex> writeLocker(currentPoseSharedMutex_);
    RealPos = currentPose;
}


读写锁(常用于一写多读的情况)用法:

#include <boost/thread/shared_mutex.hpp>
boost::shared_mutex sharedMutex_;   
boost::shared_lock<boost::shared_mutex> readLock(sharedMutex_);
boost::unique_lock<boost::shared_mutex> writeLock(sharedMutex_);



C++11封装的原子数据类型std::atomic

std::atomic<原生变量类型>  原生变量类型位数不能超过机器位数,比如64位机器不能超过8位

定义

std::atomic<int> isResetMotor{0};
isResetMotor.store(msg->data()); 设置
int   i  = isResetMotor.fetch();获取
int    i = isResetMotor.fetch_add(1);获取并设置



标签: 嵌入式Linux
每天进步一点点!

相关文章

cmake相关

configure指定编译地址./configure  --prefix=install --enable-shared=yesconfigure指定生成静态库--ena...

Linux查看进程占用端口及防火墙开放端口

查看进程占用端口:nvidia@tegra-ubuntu:~$ lsof -i -P | grep nss nss_serve ...

Linux记录core文件方法

执行一下这个命令,就会在段错误的时候记录core文件了sudo sysctl -w kernel.core_pattern=/var/core加上去掉core文件大小限制...

wsl使用

查看分发版本:wsl -l -v导出分发版为tar文件到d盘: wsl --export Ubuntu-16.04 d:\ubuntu16.04.tar注销当前分发版:wsl --unregister...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。