跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 请问使用乐观锁,为什么不会在比较完成功然后写回的时候,遭遇其他线程的更改?
未分類
27 8 月 2020

请问使用乐观锁,为什么不会在比较完成功然后写回的时候,遭遇其他线程的更改?

请问使用乐观锁,为什么不会在比较完成功然后写回的时候,遭遇其他线程的更改?

資深大佬 : chwangtenger 18

这是由什么机制来保障的?看一些文章里都没有讲这个呀,很疑惑。

大佬有話說 (13)

  • 資深大佬 : luckyrayyy

    compare and swap,是 cpu 级别保证的原子操作,不会出现比较和修改之间插入别的操作。

  • 主 資深大佬 : chwangtenger

    CAS 是一条 CPU 并发原语

  • 資深大佬 : wysnylc

    @luckyrayyy #1 会有 ABA 的问题 请问使用乐观锁,为什么不会在比较完成功然后写回的时候,遭遇其他线程的更改?

  • 資深大佬 : 312ybj

    compareAndSet*函数是在 unsafe 包里,是 native 函数。源码在.cpp 文件里,都是贴近 cpu 的机器语言。我是看不懂。我就是这样记的,无锁的线程安全

  • 資深大佬 : gotonull

    因为比较和写入这 2 步是原子操作

  • 資深大佬 : cheng6563

    不是不会被修改,是能检测到被其他线程修改了,然后报错或重试

  • 資深大佬 : luckyrayyy

    @wysnylc 这是另一个问题

  • 資深大佬 : laminux29

    现在的 CPU,有一条指令,叫原子操作指令。

    该指令的意思是:

    当某个核,发出这条指令后:
    1.如果当前环境有多个核,那么它会阻止其他所有核的操作,当它操作完毕后,其他核才能继续操作。

    2.操作系统会阻止运行在当前核上面的其他线程的切换操作。

    这样就确保了,别的线程,不会更改在这个操作执行期间的数据。

  • 資深大佬 : VDimos

    原子操作不会被中断

  • 資深大佬 : OysterQAQ

    查一下 原语 的概念

  • 資深大佬 : useben

    cpu 锁 /缓存锁

  • 資深大佬 : wysnylc

    @luckyrayyy #7 是同一个问题,ABA 就会导致在比较和修改之间有别的操作而且最终修改是成功无感知的

  • 資深大佬 : SmiteChow

    因为 mysql 引擎执行 sql 是原子性的

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具