【发布时间】:2018-02-01 22:38:38
【问题描述】:
我一直在通过 STM 在没有传统锁的情况下进行并发,它解释了在将共享值永久提交到共享值之前比较共享值。
CAS 也做同样的事情。线程获取他们想要更改的数据的副本并应用他们的更改,乐观的假设是在此期间没有其他线程对共享内存进行更改。当这个乐观的假设成立时,线程只是设法更新共享内存而没有锁定。当这个假设不成立时,工作就被浪费了,但仍然没有应用锁定。
CAS和STM是互用的还是这两者有什么区别??
【问题讨论】:
-
你的想法跨越了几个抽象层。 CAS 是用于并发控制的极低级原语。可以用CAS来实现传统的锁,这是一种更高层次的机制,也可以用传统的锁来实现软件事务内存,它是一种更高级的机制。
标签: multithreading concurrency