基于项目:https://github.com/Rtoax/OpenCRTL

要问最小临界区是多少,请看下文

#ifndef __RT_ASM_LOCK_CAS_H
#define __RT_ASM_LOCK_CAS_H 1#include "rt_config.h"#include "asm/suffix/suffix.h"#include "easy/attribute.h"typedef volatile long __cas_lock_t;#if 0
#define CAS(ptr, val_old, val_new)\({ char ret; __asm__ __volatile__("lock; cmpxchg"ASUFFIX" %2,%0; setz %1": "+m"(*ptr), "=q"(ret): "r"(val_new),"a"(val_old): "memory"); ret;})
#define CAS32(ptr, val_old, val_new)\({ char ret; __asm__ __volatile__("lock; cmpxchgl %2,%0; setz %1": "+m"(*ptr), "=q"(ret): "r"(val_new),"a"(val_old): "memory"); ret;})#else#define CAS(loc, old_value, new_value) __sync_bool_compare_and_swap((void **)loc, old_value, new_value)#endif#endif /*<__RT_ASM_LOCK_CAS_H>*/

CAS:compare and swap相关推荐

  1. Java中CAS(Compare And Swap,比较和交换)算法的技术原理简述

    - title: Java中CAS(Compare And Swap,比较和交换)算法的技术原理简述 - date: 2021/8/14 文章目录 CAS全称 Compare And Swap,是一种 ...

  2. 猫头鹰的深夜翻译:Java中的CAS(Compare And Swap)

    题目要求 在我们深入了解CAS(Compare And Swap)策略以及它是如何在AtomicInteger这样的原子构造器中使用的,首先来看一下这段代码: public class MyApp { ...

  3. 非阻塞同步算法与CAS(Compare and Swap)无锁算法

    锁(lock)的代价 锁是用来做并发最简单的方式,当然其代价也是最高的.内核态的锁的时候需要操作系统进行一次上下文切换,加锁.释放锁会导致比较多的上下文切换和调度延时,等待锁的线程会被挂起直至锁释放. ...

  4. CAS(Compare and swap)比较并交换算法解析

    CAS说明 CAS全称是Compare and swap.字面翻译的意思就是比较并交换. CAS可以用来实现乐观锁,CAS中没有线程的上下文切换,减少了不必要的开销 说明:本文解析的JDK源码为ope ...

  5. 多线程编程: Compare And Swap (CAS)

    CAS介绍 比较并交换(compare and swap, CAS),是原子操作的一种,可用于在多线程编程中实现不被打断的数据交换操作,从而避免多线程同时改写某一数据时由于执行顺序不确定性以及中断的不 ...

  6. 【CAS】Implementing generic double-word compare and swap for x86/x86-64

    Written by Marwan Burelle 2013-02-27 10:10:00 目录 The ABA problem Double-word CAS Using cmpxchg for 3 ...

  7. 常见锁策略_CAS(Compare And Swap)_synchronized优化

    目录 1.常见锁策略 1.1乐观锁vs悲观锁 1.2轻量级锁vs重量级锁 1.3自旋锁vs挂起等待锁 自旋锁 挂起等待锁 1.4互斥锁vs读写锁 1.5公平锁vs非公平锁 公平锁 非公平锁 1.6可重 ...

  8. DBCO-PEG4-alcohol CAS:1416711-60-8 二苯基环辛炔-四聚乙二醇-乙醇

    一.详情介绍 1.名称 中文: 二苯基环辛炔-四聚乙二醇-乙醇 英文:DBCO-PEG4-alcohol CAS:1416711-60-8 分子式:C29H36N2O6 2.描述 二苯基环辛炔-四聚乙 ...

  9. 酞菁绿,耐高温酞菁绿颜料, 酞菁有机颜料CAS: 1328-53-6

    酞菁绿,耐高温酞菁绿颜料, 酞菁有机颜料CAS: 1328-53-6 化学类型: 酞菁类 别名: 酞菁有机颜料 CAS登记号: 1328-53-6 颜料索引号: C.I.颜料绿7(C.I.Pigmen ...

最新文章

  1. 织梦dedecms如何快速使用拼音首字母做栏目名称
  2. (zhuan) Recurrent Neural Network
  3. LeetCode 52.N-Queens II
  4. [蓝桥杯][2014年第五届真题]稍大的串(STL)
  5. Python File 介绍
  6. 将堆栈异常返回前端显示
  7. 华人、华侨、华裔之间究竟有什么区别?
  8. abb变频器dp适配器说明书_PROFIBUS-DP与ABB变频器之间通讯设置步骤
  9. Unity碰撞和触发
  10. 【PTA】7-9 句子首字母变大写(python)
  11. 冬奥探秘:那些隐匿在冬奥中的“绿科技”
  12. 阿里巴巴第三财季营收1172.78亿元,同比增41%
  13. 【Keil C51单片机延时程序】
  14. 微信iOS端无法执行jquery on()方法
  15. video标签(获取视频时间总长度,视频当前时间,播放暂停方法,视频封面,)
  16. Solidworks如何生成爆炸图
  17. 华为平板可以安装python_Python镜像怎么配置_Python镜像下载-华为云
  18. 反编译class文件
  19. Ubuntu20.04+gdb/vscode调试ROS(VINS-Mono)程序
  20. 1665B Almost Ternary Matrix

热门文章

  1. ubuntu如何安装python36_在Ubuntu 16.04下安装Python3.6,ubuntu1604,Python36
  2. mysql统计功能和数据库information_schema/performance_schema
  3. Python学习(十)Python 函数
  4. # 2017-2018-1 20155336《信息安全技术》实验二——Windows口令破解
  5. 一个特殊的List去重问题的解决方案
  6. 软件工程概论总结第四章
  7. linux 窗口不能移动的替换命令
  8. 用C做的电子时钟程序
  9. vs2005菜单:工具-选项-环境
  10. 【摘】把vmware的虚拟机硬盘vmdk文件分割成多个2G文件