我已经读到,免等待会导致所有线程独立完成,而免锁会确保程序整体完成。我不太明白。任何人都可以提供一个示例(java)来说明这一点。
编辑:无锁是否意味着没有死锁的程序?
如果一个程序是无锁的,则基本上意味着它 的至少一个 线程可以保证在任意时间段内取得进展。如果程序死锁,则它的所有线程(因此也就整个程序)都无法取得进展- 我们可以说它不是无锁的。由于保证了无锁程序的进展,因此保证了它们的完成(假定有限执行而没有例外)。
无等待是一个更强的条件,这意味着无论线程执行的时间/顺序如何,都保证 每个 线程都可以在任意时间段内取得进展。因此我们可以说线程独立完成。所有无需等待的程序都是无锁的。
我不知道有任何Java例子可以说明这一点,但是我可以告诉您,无锁/无等待程序通常是使用CAS指令之类的低级原语实现的,没有锁。