Boost.Lockfree 扩展的 C++ 非标准库

#include <boost/lockfree/queue.hpp>
#include <boost/lockfree/spsc_queue.hpp>#include <boost/lockfree/stack.hpp>#include <boost/atomic.hpp>
  • Boost.Lockfree样例代码:https://www.boost.org/doc/libs/1_66_0/doc/html/lockfree/examples.html
  • 文档目录:https://www.boost.org/doc/libs/1_66_0/doc/html/lockfree.html

C++ 新标准 std::atomic数据结构类, 支持多线程并发读写

术语 atomic operations -- 指特定操作(内存读写访问)不允许被分割
参见最新的 C++11 atomic library standard

std::atomic<>::is_lock_free()
std::atomic<>::compare_exchange_weak();
std::atomic<>::compare_exchange_strong();
/* 定义atomic<int>类型的全局变量 X 和 Y: */
std::atomic<int> X(0);
std::atomic<int> Y(0);int r1, r2;void thread1()
{X.store(1);r1 = Y.load();
}void thread2()
{Y.store(1);r2 = X.load();
}

1.术语 memory barriers

Howells 和 McKenney’s 在Linux内核中实现的内存屏障,参见网址:
http://www.kernel.org/doc/Documentation/memory-barriers.txt

2.术语 ABA Problem

参见维基百科词条 http://en.wikipedia.org/wiki/ABA_problem
多线程并发操作时,必须设法避免ABA问题

3.术语CAS

参见维基百科词条 https://en.wikipedia.org/wiki/Compare-and-swap

4.术语RMW

术语RMW和术语CAS也可以参考博客文章《An Introduction to Lock-Free Programming》,网址: https://preshing.com/20120612/an-introduction-to-lock-free-programming/

  • Atomic Read-Modify-Write Operations
  • Compare-And-Swap 循环处理

另外可参考 Geoff Langdale的文章《无锁式编程(Lock-Free Programming)》, 网址: https://www.cs.cmu.edu/~410-s05/lectures/L31_LockFree.pdf

其他术语

术语RCU = Read-Copy-Update是Linux内核中定义的内存块并发读写防护工具. 参见维基百科词条 https://en.wikipedia.org/wiki/Read-copy-update

术语SPSC 和术语 MPMC

  • SPSC = Single-Producer / Single-Consumer
    双线程结构:单一生产者+单一消费者
  • MPMC = many-Producer / many-Consumer
    多线程结构:同时存在多个生产者+多个消费者

术语 sequential consistency

多线程并发乱序处理一组有序排列的数据,输出的结果中前后顺序可能被打乱,与原始顺序不一致。。。

Lock-Free / Lockless 相关术语相关推荐

  1. 【FFmpeg】FFmpeg 相关术语简介 ( 容器 | 媒体流 | 数据帧 | 数据包 | 编解码器 | 复用 | 解复用 )

    文章目录 一.FFmpeg 简介 二.FFmpeg 相关术语 1.容器 2.媒体流 3.数据帧 4.数据包 5.编解码器 6.复用 7.解复用 博客资源 一.FFmpeg 简介 FFmpeg 是 &q ...

  2. 【软件工程】CMMI 能力成熟度模型集成 ( 简介 | 相关术语 | CMMI 等级评估次序 )

    文章目录 一.CMMI 简介 二.CMMI 相关术语 三.CMMI 等级评估次序 一.CMMI 简介 CMMI 全称 Capability Maturity Model Integration , 能 ...

  3. 动态代理——》AOP —— Spring 中的 AOP||AOP 相关术语||学习 spring 中的 AOP 要明确的事

    AOP 概述 什么是 AOP       AOP:全称是 Aspect Oriented Programming 即:面向切面编程 AOP 的作用及优势 作用: 在程序运行期间,不修改源码对已有方法进 ...

  4. property field java_Java 中 field 和 variable 区别及相关术语解释

    原标题:Java 中 field 和 variable 区别及相关术语解释 先说一下 field 和 variable 之间的区别: class variables and instance vari ...

  5. Spring AOP相关术语解释及简单使用

    什么是面向切面编程 百度百科定义为:在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术. ...

  6. 3.数据库操作相关术语,Oracle认证,insert into,批量插入,update tablename set,delete和truncate的区别,sql文件导入

     1相关术语 语句 含义 操作 DML语句 (Data Manipulation Language) 数据库操作语言 insert update delete select DDL语言 (Date ...

  7. 王道考研 计算机网络8 物理层基本概念 数据通信相关术语

    第二章知识 物理层基本概念 典型的数据通信模型 数据通信相关术语 三种通信方式 两种传输方式 串行:一条信道 并行:多条信道

  8. Linux系统编程31:进程信号之什么是信号的阻塞及相关术语(递达,未决,pending位图,handler位图)

    文章目录 (1)信号相关术语 (2)信号在内核中的表示 前面说过,操作系统发出信号之后,对于进程有可能不是立马就处理的,所以如果不是立即处理,那么在这个空档期间进程究竟对信号做了怎样的处理呢? (1) ...

  9. Kubernetes-基本介绍/核心功能/相关术语(一)

    1 Kubernetes介绍 单词:Kubernetes这个单词起源于希腊语,意为舵手或领航员,K8S即为缩写,其中8代表了"ubernete"这8个字符. 来源:K8S前身是Go ...

最新文章

  1. vue2.0 组织机构树形选择组件(类似elementui el-transfer 与 el-tree 两个标签的结合)...
  2. scikit-learn点滴
  3. Fedora 20 安装后的一些事情
  4. Dos批处理编程常用命令
  5. STM32 位段详解
  6. NodeJs中使用jQuery?
  7. JAVA Metrics 度量工具使用介绍
  8. 问题记录:模组屏调试点亮
  9. ESP32 之 ESP-IDF 教学(十一)WiFi篇—— WiFi两种模式
  10. 树莓派——实时时钟模块(RTC)
  11. ie内核出现问题的解决方法
  12. python绘制隐含波动率曲面_如何用python计算隐含波动率
  13. 纸牌游戏--小猫钓鱼
  14. 【历史上的今天】5 月 4 日:微软放弃收购雅虎;史上最危险的电脑病毒;vi 发布
  15. mac 安装问题汇总
  16. 炼数成金(dataguru)IT技能修炼
  17. Programmer Study Guide-游戏程序员指南
  18. Android Studio开发:简单的登录注册界面
  19. 蓝牙BLE之系统学习
  20. 微信多开工具 Mac版的安装及卸载教程

热门文章

  1. ubuntu16.04初安装,ROS kinetic,安装ros,配置ros环境
  2. Python基础-循环
  3. (配置消息转换器)解决后台返回json数据到前台时页面时中文显示乱码问题
  4. 模板类的析构函数如何写_项目经理如何正确写好年终总结+10大PPT模板可直接套用...
  5. r语言插补法_R语言用多重插补法估算相对风险
  6. mongodb 可视化_自动爬取疫情数据、交互式地图可视化
  7. 洛谷——P1296 奶牛的耳语
  8. 实验2-2-1 计算分段函数[1] (10 分)
  9. vue.js中使用微信扫一扫,解决invalid signature问题
  10. gpg加密命令 linux_Ubuntu下加密命令GPG和KEY