专栏名称: 顶尖架构师栈
分享业务架构、技术架构、系统设计方案,以及微服务架构源码,提供业务场景答疑
今天看啥  ›  专栏  ›  顶尖架构师栈

【第16期】浅谈Mutex与Spinlock

顶尖架构师栈  · 公众号  ·  · 2024-09-24 07:46

文章预览

    并发问题中,单机下多个进程同时访问某公共变量要实现临界区的互斥访问,不然容易发生冲突,而在集群状态下为了保证各个节点的数据一致性也需要进行同步,实现同步一般都通过锁机制(包括信号量)来完成。其中底层有两个基本的锁,就是互斥锁(Mutex Lock)和自旋锁(Spinlock),单机环境下大多情况都可以通过这两个锁来进行同步 1 锁的本质 锁,在计算机里本质上就是一块内存空间。 当这个空间被赋值为1的时候表示加锁,被赋值为0的时候表示解锁。 多个线程抢一个锁,就是抢着要把这块内存赋值为1。在多核环境中,内存空间是共享的,如果每个核上跑一个线程,要保证一次只有一个线程抢到锁,则需要使硬件实现缓存一致性协议 2 硬件实现 锁的硬件实现依赖底层的硬件指令,TAS(Test And Set)和 CAS(Compare And Set) 2.1  TAS指令 TAS指令的语义是: ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览