首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏从码农的全世界路过

    Atomic小结

    通过AtomicInteger, AtomicLong的分析说明, 可以知道Atomic相关类都是利用volatile实现线程间的可见性, 利用Unsafe类中的CAS机制, 完成的原子性操作. 现在对Atomic做下总结 1. Pair<V> cmp, Pair<V> val) { return UNSAFE.compareAndSwapObject(this, pairOffset, cmp, val); } 总结 整个atomic

    51810编辑于 2022-06-20
  • 来自专栏转载gongluck的CSDN博客

    boost: atomic

    /blog.csdn.net/gongluck93/article/details/79679571 Code #include <iostream> #include <boost/atomic.hpp > using namespace std; using namespace boost; int main() { atomic<int> a(10); assert(a == 10 ); atomic<long> l; cout << l << endl; atomic<bool> b(false); assert(! b.load()); b.store(true); assert(b);//Òþʽload atomic<int> n(100); assert(n.exchange (200) == 100); assert(n == 200); atomic<long> ll(100); long v = 100; bool bres = false

    1.5K20发布于 2019-05-25
  • 来自专栏灰子学技术

    Go并发之atomic

    1. atomic介绍: sync/atomic包提供了原子操作的能力,直接有底层CPU硬件支持,因而一般要比基于操作系统API的锁方式效率高些;这些功能需要非常小心才能正确使用。 英文介绍如下: (Package atomic provides low-level atomic memory primitives useful for implementing synchronization 链接:https://golang.org/pkg/sync/atomic/ 典型使用场景: sync/once, 实现源码如下所示: ? 2. atomic的API介绍 2.1 对于自增和自减的操作,对应的API func AddInt32(addr *int32, delta int32) (new int32) func AddInt64 参考文档: https://golang.org/pkg/sync/atomic/

    83910发布于 2020-06-09
  • 来自专栏happyJared

    Atomic 原子类

    认识 Atomic 原子类 Atomic 翻译成中文是原子的意思。在化学中,原子是构成一般物质的最小单位,是不可分割的。 而在这里,Atomic 表示当前操作是不可中断的,即使是在多线程环境下执行,Atomic 类,是具有原子操作特征的类。 Java 的原子类都存放在并发包 java.util.concurrent.atomic 下,如下图所示。 ?

    1.3K30发布于 2019-07-10
  • 来自专栏网络收集

    Atomic 原子类

    Atomic 原子类原子对象的单个方法具有原子性,通过 CAS 算法和自旋操作实现,并发效率高。使用时需导入 import java.util.concurrent.atomic.*。

    58620编辑于 2022-08-06
  • 来自专栏JuneBao

    【Go】sync.atomic

    Atomic loads do. atomic atomic 包中提供许多基本数据类型的原子操作,主要可以分为下面几类: 原子交换 CAS 原子加法 原子取值 原子赋值 Value 原子交换 这一类方法的作用是将 atomic.CompareAndSwapInt64(&a, old, old + 1); { old = a } } } 原子加法 顾名思义,是给原来 type S struct { a int } func main() { var v atomic.Value s := S{1} v.Store(s) p Mutex由操作系统实现,而atomic包中的原子操作则由底层硬件直接提供支持。 锁应当用来保护一段逻辑,对于一个变量更新的保护,原子操作通常会更有效率,并且更能利用计算机多核的优势,如果要更新的是一个复合对象,则应当使用atomic.Value封装好的实现。

    64310编辑于 2022-10-26
  • 来自专栏巡天遥看一千河

    C++ 11 Atomic

    原子指令的例子可以看boost.atomic的Example,atomic的官方描述可以看这里 https://zh.cppreference.com/w/cpp/atomic/memory_order

    1.4K31发布于 2021-03-24
  • 来自专栏Java项目实战

    java Atomic原理图文

    Java中的Atomic类是Java.util.concurrent包提供的一组原子操作类,这些类提供了线程安全的基本数学和逻辑运算。 :原子对象引用成员方法图片图片图片Atomic类的主要成员方法如下:get()和set()方法:用于获取和设置值。 使用Java Atomic类结合ConcurrentHashMap类来实现线程安全的计数器,可以处理高并发环境下的计数问题。 ConcurrentHashMap提供了线程安全的Hash表操作,而Atomic类可以保证对计数器的更新是原子性的。 如果你需要在多线程应用程序中处理共享变量,可以尝试使用Java Atomic类来提高程序的性能和可靠性。

    1.3K30编辑于 2023-04-19
  • 来自专栏SpringBoot教程

    原子操作类Atomic

    */ transient volatile int cellsBusy; 最重要的两个 2.Striped64中一些变量或者方法的定义 3.cell 是 java.util.concurent.atomic

    2.7K20编辑于 2023-02-16
  • 来自专栏海纳周报

    Atomic实现锁

    java.util.concurrent.lock下的几个锁以及synchronized锁其实背后都要使用atomic操作,那我们不妨就使用atomic操作把锁实现一遍。 咱们先从最简单的开始。 这个其实比较简单,我只需要用一个atomic变量,让它为 0,不管有多少线程过来,谁先抢到这个变量把它置为1,谁就相当于拿到了关键区的使用权,而其他没抢到的就不能进入关键区。 那么想改正它,我们就可以把add用一个atomic变量保护起来。一个线程只有获得了这个许可,才能继续执行 add 操作。 如果我们使用Atomic保护关键区的思路来改写,应该怎么做呢? 自旋锁 今天介绍一种自旋锁的思想。 我们使用一个Atomic变量把整个关键区保护起来了。 自旋锁实现起来非常简单,如果关键区的执行时间很短,往往自旋等待会是一种比较高效的做法,它可以避免线程的频繁切换和调度。

    1K60发布于 2018-03-02
  • 来自专栏又见苍岚

    原子操作 Atomic Operation

    简介 原子操作(atomic operation)指的是由多步操作组成的一个操作。如果该操作不能原子地执行,则要么执行完所有步骤,要么一步也不执行,不可能只执行所有步骤的一个子集。 参考资料 原子操作 原子操作对建立在跨进程的共享内存上的变量有效吗 Atomic Operations in OS 文章链接: https://www.zywvvd.com/notes /coding/cpp/atomic-operation/atomic-operation/

    1.4K10编辑于 2023-10-18
  • 来自专栏落叶飞翔的蜗牛

    Atomic原子类介绍

    Atomic 原子类概述 Atomic 翻译成中文是原子的意思。在化学上,我们知道原子是构成一般物质的最小单位,在化学反应中是不可分割的。在我们这里 Atomic 是指一个操作是不可中断的。 并发包 java.util.concurrent 的原子类都存放在java.util.concurrent.atomic下,如下图所示。 ?

    78810发布于 2021-03-20
  • 来自专栏腾讯数据库技术

    MySQL 8.0 Atomic DDL

    参考: Atomic DDL 官方介绍: https://dev.mysql.com/doc/refman/8.0/en/atomic-ddl.html InnoDB_New_DD:   Support

    1.5K40编辑于 2023-01-30
  • 来自专栏肉眼品世界

    Atomic原子类的实现原理

    什么是 Atomic? 实现一个计数器 AtomicInteger 源码分析 AtomicLong 和 LongAdder 谁更牛? 总结 当我们谈论『线程安全』的时候,肯定都会想到 Atomic 类。不错,Atomic 相关类都是线程安全的,在讲 Atomic 类之前我想再聊聊『线程安全』这个概念。 线程安全真的是线程的安全吗? 方法有很多,比如:加锁、Atomic 原子类等。 好了,咱们今天先来看看Atomic类。 什么是 AtomicAtomic 包下的原子操作类有很多,可以大致分为四种类型: 原子操作基本类型 原子操作数组类型 原子操作引用类型 原子操作更新属性 Atomic原子操作类在源码中都使用了Unsafe类,Unsafe类提供了硬件级别的原子操作 总结 讲了半天,可能有的小伙伴还是比较懵,Atomic 类到底是如何实现线程安全的?

    95630发布于 2021-09-27
  • 来自专栏FunTester

    Atomic 负载均衡器实践

    Java 的 AtomicInteger(位于 java.util.concurrent.atomic 包)提供无锁的原子操作,通过 CAS(Compare-And-Swap)机制确保线程安全。 org.funtester.performance.books.chapter05.section6; import java.util.List; import java.util.concurrent.atomic.AtomicInteger import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.concurrent.atomic.AtomicInteger

    44010编辑于 2025-05-26
  • 来自专栏Java架构师必看

    多线程Atomic和ThreadLocal

    @Override public int getCount() { return count; } } import java.util.concurrent.atomic.AtomicInteger ClientThread t = new ClientThread(c); t.start(); } System.out.println("Atomic

    54930发布于 2021-07-12
  • 来自专栏技术趋势

    jdk-Atomic源码学习

    上文:AQS-Exchanger源码学习 源码下载:https://gitee.com/hong99/jdk8 Atomic了解 atomic是并发框架中的一员,所属位置:java.util.concurrent.atomic Atomic解决了什么问题? 并发的三大特性:原子性、可见性、有序性 没错atomic就是解决以上三种特性而专门设计的一种在高并发下线程安全实现。 Atomic相关基础学习 atomic相关类型如下: 基本类型: AtomicLong 长整型原子 AtomicInteger 整型原子 AtomicBoolean 布尔类型 引用类型: AtomicReference Atomic源码学习 java.util.concurrent.atomic.AtomicInteger 源码学习 //整型原子类实现 public class AtomicInteger extends java.util.concurrent.atomic.AtomicIntegerFieldUpdater 源码学习 package java.util.concurrent.atomic; import

    49420编辑于 2023-02-28
  • 来自专栏allsmallpi博客

    Concurrent——Atomic原子操作类

    今天先从最简单的开始,Atomic原子类。 先看一下atomic包下的类  ? 一共12个,共分四类:基本类型、数组、引用、属性。我们就按这四个分类,介绍一下它们的用途以及实现。

    49520发布于 2021-02-25
  • 来自专栏后端

    golang 系列:atomic 原子操作

    sync/atomic 介绍 当我们想要对某个变量并发安全的修改,除了使用官方提供的 mutex,还可以使用 sync/atomic 包的原子操作,它能够保证对变量的读取或修改期间不被其他的协程所影响。 atomic 包的原子操作是通过 CPU 指令,也就是在硬件层次去实现的,性能较好,不需要像 mutex 那样记录很多状态。 sync/atomic 操作 atomic 包有几种原子操作,主要是 Add、CompareAndSwap、Load、Store、Swap。 Add atomic 的 Add 是针对 int 和 uint 进行原子加值的: func AddInt32(addr *int32, delta int32) (new int32) func AddUint32 uintptr) (old uintptr) func SwapPointer(addr *unsafe.Pointer, new unsafe.Pointer) (old unsafe.Pointer) 总结 atomic

    1.7K00发布于 2021-08-19
  • 来自专栏从码农的全世界路过

    并发原子性之Atomic

    Atomic原子操作类提供了一种用法简单, 性能高效, 线程安全的变量更新方式. 今天就以AtomicInteger为例,看看它是如何做到的.

    72410编辑于 2022-06-20
领券