博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++11 —— 简易的旋转锁类
阅读量:4310 次
发布时间:2019-06-06

本文共 1174 字,大约阅读时间需要 3 分钟。

简易的旋转锁

使用 C++11 的原子操作,实现的简易旋转锁(xspinlock.h):

/** * @file    xspinlock.h * 
 * Copyright (c) 2019, Gaaagaa All rights reserved. *  * 文件名称:xspinlock.h * 创建日期:2019年01月22日 * 文件标识: * 文件摘要:简易的旋转锁类。 *  * 当前版本:1.0.0.0 * 作    者: * 完成日期:2019年01月22日 * 版本摘要: *  * 历史版本: * 原作者  : * 完成日期: * 版本摘要: * 
*/#ifndef __XSPINLOCK_H__#define __XSPINLOCK_H__#include
#include
// x_spinlock_t/** * @class x_spinlock_t * @brief 简易的旋转锁类。 */class x_spinlock_t{ // constructor/destructorpublic: x_spinlock_t(void) { } ~x_spinlock_t(void) { } // public interfacespublic: /**********************************************************/ /** * @brief 加锁操作接口。 */ void lock(void) { while (m_xspin_flag.test_and_set(std::memory_order_acquire)) std::this_thread::yield(); } /**********************************************************/ /** * @brief 解锁操作接口。 */ void unlock(void) { m_xspin_flag.clear(std::memory_order_release); } // data membersprivate: std::atomic_flag m_xspin_flag = ATOMIC_FLAG_INIT; ///< 旋转标志};#endif // __XSPINLOCK_H__

转载于:https://www.cnblogs.com/VxGaaagaa/p/10320072.html

你可能感兴趣的文章
Mysql出现Table 'performance_schema.session_status' doesn't exist
查看>>
MySQL innert join、left join、right join等理解
查看>>
vivado模块封装ip/edf
查看>>
sdc时序约束
查看>>
Xilinx Jtag Access/svf文件/BSCANE2
查看>>
NoC片上网络
查看>>
开源SoC整理
查看>>
【2020-3-21】Mac安装Homebrew慢,解决办法
查看>>
influxdb 命令行输出时间为 yyyy-MM-dd HH:mm:ss(年月日时分秒)的方法
查看>>
已知子网掩码,确定ip地址范围
查看>>
判断时间或者数字是否连续
查看>>
docker-daemon.json各配置详解
查看>>
Docker(一)使用阿里云容器镜像服务
查看>>
Docker(三) 构建镜像
查看>>
FFmpeg 是如何实现多态的?
查看>>
FFmpeg 源码分析 - avcodec_send_packet 和 avcodec_receive_frame
查看>>
FFmpeg 新旧版本编码 API 的区别
查看>>
RecyclerView 源码深入解析——绘制流程、缓存机制、动画等
查看>>
Android 面试题整理总结(一)Java 基础
查看>>
Android 面试题整理总结(二)Java 集合
查看>>