简易的旋转锁

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

/*** @file    xspinlock.h* <pre>* Copyright (c) 2019, Gaaagaa All rights reserved.* * 文件名称:xspinlock.h* 创建日期:2019年01月22日* 文件标识:* 文件摘要:简易的旋转锁类。* * 当前版本:1.0.0.0* 作    者:* 完成日期:2019年01月22日* 版本摘要:* * 历史版本:* 原作者  :* 完成日期:* 版本摘要:* </pre>*/#ifndef __XSPINLOCK_H__
#define __XSPINLOCK_H__#include <atomic>
#include <thread>// x_spinlock_t/*** @class x_spinlock_t* @brief 简易的旋转锁类。*/
class x_spinlock_t
{// constructor/destructor
public:x_spinlock_t(void)  { }~x_spinlock_t(void) { }// public interfaces
public:/**********************************************************//*** @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 members
private:std::atomic_flag   m_xspin_flag = ATOMIC_FLAG_INIT;   ///< 旋转标志
};#endif // __XSPINLOCK_H__

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

C++11 —— 简易的旋转锁类相关推荐

  1. Windows线程同步--关键段和旋转锁

    关键段 关键段(Critical Section)是一小段代码,它在执行之前需要独占对一些共享资源的访问权.这种方式可以让多行代码以"原子方式"对资源进行操控.这里的原子方式,指的 ...

  2. C++11实战——多线程的日志类

    C++11实战--多线程的日志类 C++标准库的std::cout和std::ofstream重载了operator<<,单线程使用非常简单.但由于其并非线程安全,在多线程中使用则需要自己 ...

  3. Java黑皮书课后题第10章:*10.11(几何:Circle2D类)定义Circle2D类

    *10.11(几何:Circle2D类)定义Circle2D类 题目 程序 代码 Test11.java Test11_Circle2D.java 运行实例 关于UML 题目 程序 Test11.ja ...

  4. Xp下的程序编译成linux,WinXP下打造自己的linux 0.11简易编译环境(原创)

    http://caiwei8888.blog.163.com/blog/static/3017424120101913353856/ 学习赵炯博士的<linux 0.11 内核完全注释>, ...

  5. 11.1.1 认识StringBuffer类(1)

    第11章 Java常用类库 通过本章的学习可以达到以下目标: 掌握String与StringBuffer的区别,可以熟练使用StringBuffer中的各种方法进行相关操作. 能够自己编写一个得到日期 ...

  6. Qt5 学习之路及嵌入式开发教程11:Qt5标准输入对话框类及QSlider控件

    Qt5 学习之路及嵌入式开发教程11:Qt5标准输入对话框类及QSlider控件 这次任务要完成弹出窗口及QSlider控件的界面设计及代码编写 一.Qt5弹出窗口 1.界面式布局 建立项目工程文件 ...

  7. JVM(Java SE 11版本)加载类和接口

    本文介绍了Java虚拟机(Java SE 11版本)加载类和接口. 加载类和接口 加载是指查找具有特定名称的类或接口类型的二进制形式的过程.典型的做法是,查找事先由Java编译器从源代码计算而来二进制 ...

  8. android逆时针方向横屏,Android屏幕镜像工具 “Scrcpy “增加了旋转锁,提高了质量...

    Android屏幕镜像工具 "Scrcpy "增加了旋转锁,提高了质量 Mark Do 2020年5月5日 暂无评论 阅读 4,408 次 好用的移动工具scrcpy应用在最新版本 ...

  9. Qt重定向QDebug,自定义一个简易的日志管理类

    0.前言 相对于第三方的日志库,在 Qt 中使用 QDebug 打印更便捷,有时候也需要对 QDebug 输出进行重定向,如写入文件等. 在 Qt4 中使用 qInstallMsgHandler 函数 ...

最新文章

  1. 厦门大学江保详:缺陷检测的讲解!
  2. 大学生学业指导类书目
  3. 基础贪心算法(HDU2037今年暑假不AC)
  4. oracle table 函数使用
  5. 信佑无盘主服务器密码,(信佑无盘帮助手册.doc
  6. 信息学奥赛一本通 1965:【14NOIP普及组】珠心算测验 | 洛谷 P2141 [NOIP2014 普及组] 珠心算测验
  7. (补)20200105:整数转罗马数字
  8. eBay和PayPal公布分拆细节:双方还将紧密合作。
  9. 根据当前节点获取所有上层结构的组织(递归算法)
  10. 12557是oracle什么错误吗,在做oracle standby时,出现ORA-12557错误.
  11. Windows11 专业版 体验分享
  12. 【UCHome二次开发】UCHome模板语法…
  13. CSS3科技雷达扫描动画js特效
  14. 地图瓦片编号与经纬度的换算关系及不同源坐标之间的相互转换
  15. 搜狗浏览器安装插件(.crx)
  16. 1 PPT默认初始设置(主题颜色、撤回次数、自动保存、图片压缩、字体嵌入、多格式导出、参考线、默认字体、默认样式和清除占位符)
  17. 几大ERP软件实施方法与过程
  18. Well-ordered String
  19. java 禁用迅雷_【Java】我擦!迅雷的代码结构竟然被扒了精光~
  20. 大型水利投资集团,打造数智财资管理新范式

热门文章

  1. Linux 系统目录
  2. 20141126-解决联网问题-笔记
  3. DataTable的计算功能(转)
  4. Maven项目 之eclipse操作篇
  5. Java技术栈---语言基础
  6. 读书笔记 --- [基础知识点] 小结2
  7. vue --- [全家桶] Vuex
  8. javascript --- spa初体验
  9. cnblogs_504 Gateway Time-out
  10. application/json 四种常见的 POST 提交数据方式