如果一个程序是无锁的,则基本上意味着它 的至少一个 线程可以保证在任意时间段内取得进展。如果程序死锁,则它的所有线程(因此也就整个程序)都无法取得进展-
我们可以说它不是无锁的。由于保证了无锁程序的进展,因此保证了它们的完成(假定有限执行而没有例外)。
无等待是一个更强的条件,这意味着无论线程执行的时间/顺序如何,都保证 每个
线程都可以在任意时间段内取得进展。因此我们可以说线程独立完成。所有无需等待的程序都是无锁的。
我不知道有任何Java例子可以说明这一点,但是我可以告诉您,无锁/无等待程序通常是使用CAS指令之类的低级原语实现的,没有锁。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)