`
raojl
  • 浏览: 202093 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

atomic笔记

阅读更多

inline void ice_atomic_set(ice_atomic_t* v, int i)

{

    v->counter = i;

}

 

/*

 * ice_atomic_inc - increment ice_atomic variable

 * @v: pointer of type ice_atomic_t

 * 

 * Atomically increments @v by 1. Note that the guaranteed useful

 * range of an ice_atomic_t is only 24 bits.

 *

 * Inlined because this operation is performance critical.

 */

inline void ice_atomic_inc(ice_atomic_t *v)

{

    __asm__ __volatile__(

        "lock ; incl %0"

        :"=m" (v->counter)

        :"m" (v->counter));

}

 

/**

 * ice_atomic_dec_and_test - decrement and test

 * @v: pointer of type ice_atomic_t

 * 

 * Atomically decrements @v by 1 and returns true if the result is 0,

 * or false for all other cases. Note that the guaranteed useful

 * range of an ice_atomic_t is only 24 bits.

 *

 * Inlined because this operation is performance critical.

 */

inline int ice_atomic_dec_and_test(ice_atomic_t *v)

{

    unsigned char c;

    __asm__ __volatile__(

        "lock ; decl %0; sete %1"

        :"=m" (v->counter), "=qm" (c)

        :"m" (v->counter) : "memory");

    return c != 0;

}

 

/**

 * ice_atomic_exchange_add - same as InterlockedExchangeAdd. This

 * didn't come from atomic.h (the code was derived from similar code

 * in /usr/include/asm/rwsem.h)

 *

 * Inlined because this operation is performance critical.

 */

inline int ice_atomic_exchange_add(int i, ice_atomic_t* v)

{

    int tmp = i;

    __asm__ __volatile__(

        "lock ; xadd %0,(%2)"

        :"+r"(tmp), "=m"(v->counter)

        :"r"(v), "m"(v->counter)

        : "memory");

    return tmp + i;

}

分享到:
评论

相关推荐

    并发编程atomic&collections-课上笔记1

    并发编程atomic&collections-课上笔记1

    msvcp140_atomic_wait.dll下载 找不到msvcp140_atomic_wait.dll .zip

    dll控件常规安装方法(仅供参考): 一、如果在运行某软件或编译程序时提示缺少、找不到dll等类似提示,您可将下载来的dll拷贝到指定目录即可(一般是system系统目录或放到软件同级目录里面),或者重新添加文件引用...

    Effective Modern C++学习笔记

    辨析std∷atomic和volatile之间的差异,它们各自该如何使用,还有它们与C++并行计算API之间的关联;如何修改老C++编程(比如C++98)中的实践,使之符合现代C++的软件开发规范。此文档是该书的读书笔记。

    matlab 快速学习笔记.pdf

    matlab快速学习笔记 matlab快速学习笔记 matlab快速学习笔记 matlab快速学习笔记 matlab快速学习笔记

    linux学习笔记v1.0 - 周立功开发板平台使用指令合集.docx

    Linux学习笔记 Linux学习笔记 1 1.4 Makefile 1 1.5 禁止鼠标滚轮复制操作 3 ... //ret = wait_event_interruptible(dev->r_wait, atomic_read(&dev->releasekey)); //if (ret) { // goto wait_error; //}

    \java超强笔记(超级经典)

    java.util.concurrent.atomic 包含了不用加锁情况下就能改变值的原子变量。 java.util.concurrent.locks 包含锁定的工具。 Executor接口: 替代了Thread类,他可以创建定量的、动态的以及周期性的线程池...

    Java多线程源码笔记.pdf

    1.什么是多线程 2.Thread类解析 3.使用多线程需要注意的问题 4.synchronized锁和lock锁 5.AQS 6.ReentrantLock和ReentrantReadWriteLock 7.线程池 8.死锁 9.线程常用的工具栏 10.Atomic 11.ThreadLocal

    Drupal7:Atomic Engager Drupal 7 模块

    笔记 该模块将数据洞察发送到您的帐户,并帮助您编写针对您的在线受众的相关内容,从而最大限度地提高您的绩效,实现真正的参与。 该模块还创建了一个 RSS 视图(使用模块),其中包含 300 篇最新文章的完整内容。 ...

    MFC教程lesson 13-CArchive&IO操作.rar

    MFC教程lesson 13-CArchive&IO操作.rar。 包含课程内容、视频、PPT、笔记。内容详尽,MFC珍藏。

    万门大学-人工智能实战与应用学习笔记.zip

    万门大学-人工智能实战与应用学习笔记

    并发编程笔记20190526.docx

    5、原子操作CAS (compare atomic swap) 32 三、显式锁和AQS 34 1、AQS定义两种资源共享方式: 34 2、深入源码 37 3、了解Condition的实现 42 4、 锁的可重入 44 第三章 并发容器ConcurrentHashMap 46 一、JDK1.7中...

    spring培训笔记

    Atomic: 原子性. 事务中的各个操作不可分割. 要么都成功,要么都失败. Consistency: 一致性. 数据库从一种状态转变为另一种状态, 只有合法的数据才可写入数据库, 数据有任何违例都应该回滚回最初状态. Isolation: ...

    DFT的matlab源代码-MathemticaForDFTnSPM:Mathematica笔记本,用于处理,绘制和可视化DFT代码(VASP

    atomic_prop.dat :带有元素颜色和半径的文本文件。 Bader_analysis_view.nb :可视化来自Bader分析的费用。 笔记本可以使用VASP和FHI-AIMS的“更糟糕”脚本的输出(theory.cm.utexas.edu/henkelman/research/bader/...

    atomic-discord-clone:一个原子不一致的克隆,因此我们可以使用GH版本

    笔记 使用Discord.js 可与Discord,Discord Staging配合使用,并且是推荐的客户端。 只有在执行Atomic + Litecord时才应使用登录页面,因为身份验证路由可能会使您在Discord中被禁止。 如果您使用备用网关,请在...

    原子指令于Lock-Free数据结构教学笔记

    原子指令是特殊的硬件指令,以不可分的方式对一个或多个内存位置执行操作。无论其他处理器执行什么指令,原子操作都会成功或完全失败。 原子指令可以用来做同步处理。由于原子指令可用于更改共享数据而无需获取和...

    java8源码-note:笔记

    笔记 1.Java基础 1.1 关于随机数的生成 1.2 ArrayList clear() 与 removeAll 的实现 1.3 包装类型 1.4 关于JVM 1.5 泛型 1.6 锁 1.7 浮点数 1.8 ArrayList.toArray() 1.9 String 1.10 HTTP 1.11 HashMap 2.进阶 2.1 ...

    Four-level-atomic-system:计算四能级原子系统的光谱

    四级原子系统 该存储库专用于模拟四级原子系统,该系统由三个不同的激光照射。 笔记本定义了哈密顿算子和衰减算子,然后求解稳态的主方程并绘制频谱。

    r1笔记day19_01 UberGo编程规范

    目录如下: 介绍 指导原则 指向 interface 的指针 接收器 (receiver) 与接口 零值 Mutex 是有效的 在边界处拷贝 Slices 和 Maps ... 使用 go.uber.org/atomic 避免可变全局变量 性能 优先

    部署与手动搭建fabric1.1.0网络超详细笔记

    我是使用阿里云的服务器来进行hyperledger fabric1.1.0网络的实验,下面是学习过程...ab:atomic broadcast原子(操作)广播 lscc:lifecycle(L) system(S) chaincode(CC)生命周期系统链码 Spec:Specificat

    java7rt.jar源码-JVM:JVM学习笔记

    java.util.atomic 进程/线程 并发/并行 线程 package com.ntuzy.juc_01 ; import java.util.concurrent.Callable ; import java.util.concurrent.ExecutionException ; import java.util.concurrent.FutureTask ; /*...

Global site tag (gtag.js) - Google Analytics