• 2024-09-01一个操作系统的设计与实现——第25章 多处理器(上):多处理器同步原语
    25.1多处理器同步原语的实现原理当计算机中存在不止一个CPU时,基于关中断的同步原语就失效了。这是因为每个CPU的中断是独立的,关闭一个CPU的中断并不会影响其他CPU。从本质上说,中断由rflags控制,但rflags在每个CPU中都有一个,因此,只有找到一个共享区域,才能实现多CPU间的同步原语。
  • 2024-06-03美团一面:什么是CAS?有什么优缺点?我说我只用过AtomicInteger。。。。
    引言传统的并发控制手段,如使用synchronized关键字或者ReentrantLock等互斥锁机制,虽然能够有效防止资源的竞争冲突,但也可能带来额外的性能开销,如上下文切换、锁竞争导致的线程阻塞等。而此时就出现了一种乐观锁的策略,以其非阻塞、轻量级的特点,在某些场合下能更好地提升并发性能,其
  • 2024-03-20C++ <atomic>汇编语言实现原理
    C++<atomic>汇编语言实现原理问题我们先看一下这段代码:/**badcnt.c-Animproperlysynchronizedcounterprogram*//*$beginbadcnt*//*WARNING:Thiscodeisbuggy!*/#include"csapp.h"void*thread(void*vargp);/*Threadroutineprototype*//*
  • 2023-12-08lock cmpxchg
    cmpxchg和xchg指令都会锁总线,那么,为什么要加lock前缀呢?LOCK#前缀不会占用额外的字节,而是作为指令的一部分。它会被编码为一个特定的操作码前缀,告知处理器在执行指令期间锁定总线或等效连接因为:对于cmpxchg和xchg总线锁而言当处理器执行cmpxchg和xchg指令并锁定
  • 2023-11-28CAS是什么?
    CAS是什么CAS是Compare-And-Swap(比较并交换)的缩写,是一种轻量级的同步机制,主要用于实现多线程环境下的无锁算法和数据结构,保证了并发安全性,它可以在不适用锁的情况下,对共享数据进行线程安全的操作。(ConcurentHashMap在JDK1.8开始使用的是CAS)CAS操作主要有三个参数:要更新的内存