【发布时间】:2016-10-11 01:42:48
【问题描述】:
我正在阅读akka documentation,现在我在关于非阻塞保证的部分。以下是为这些概念提供的定义:
如果每个调用都保证在一个 步数有限
Lock-freedom 是一个比wait-freedom 更弱的属性。在锁定的情况下- 免费调用,无限地经常某些方法以有限的数量结束 步骤。
无阻塞是最弱的非阻塞保证 [...]。一种方法是 如果有一个时间点之后它被称为无障碍物 单独执行
乐观并发控制 (OOC) 方法通常是 无障碍。 OOC 方法是每个参与者都试图 对共享对象执行其操作,但如果参与者 检测到来自其他人的冲突,它会回滚修改,并且 根据某个时间表再试一次。
所以,考虑以下方法:
public class MyClass{
private final AtomicInteger ai = new AtomicInteger(0);
public void method(){
while(true){
int current = ai.get();
if(ai.compareAndSet(current, current + 1))
break;
}
}
}
我们可以把它归为哪一类?我认为它是 OOC 方法(显然是根据定义)和 Obstruction-freedom 方法(显然是根据定义),但它不是 Lock-freedom em> 一。
但我不太确定,lock-freedomness 的定义有点模糊,尤其是 infinitely 通常某些方法在有限数量的步骤中完成的部分。它应该是什么意思?你能不能给我一个 wait-free 和 lock-free 方法的例子?
【问题讨论】:
-
我知道这是什么类,但 wikipedia article 有更长的解释
标签: java multithreading