嘿伙计们,
我正在阅读这些所谓的非阻塞技术,但我几乎没有疑问:
1)使用原子操作执行无锁操作,现在这些原子操作是什么?我的意思是在一定程度上他们也需要锁,对吗?那么这种无锁方法是否只为我们提供了更细粒度的锁定?
2)他们说非阻塞列表,现在非阻塞列表应该是什么:如果多个线程同时插入,只有一个会成功,另一个会做其他工作对吗?,但是如果其他线程别无选择,只能插入一个节点,那么它为什么是非阻塞的?在前一个完成之前它不会被阻止吗?
3)在java中,它们如何进行原子操作?他们不做类似的事情吗 synchronized boolean .....
那么它是如何无锁的,因为他们正在获取锁,即同步部分?4)CAS通常用于实现原子操作。那么 cas 是否只允许对同一对象进行一项操作,并停止(阻止)其他想要对同一对象进行操作的操作?很抱歉有这么多疑问...请澄清...
编辑
当我有一个结构要更新时会发生什么?硬件也支持吗?不对,那么语言不会在某种程度上获取锁以使这些结构操作原子化吗?
关于JAVA:有 AtomicReference 和 AtomicReferenceFieldUpdater 类提供对对象(结构或任何类型的对象)的更新,所以我们可以在性能方面比较它们,我的意思是速度吗?两者都使用 Unsafe 类,它使用 Native 类。