一尘不染

无等待和无锁算法的示例/说明

java

我已经读到,免等待会导致所有线程独立完成,而免锁会确保程序整体完成。我不太明白。任何人都可以提供一个示例(java)来说明这一点。

编辑:无锁是否意味着没有死锁的程序?


阅读 218

收藏
2020-12-03

共1个答案

一尘不染

如果一个程序是无锁的,则基本上意味着它 的至少一个 线程可以保证在任意时间段内取得进展。如果程序死锁,则它的所有线程(因此也就整个程序)都无法取得进展-
我们可以说它不是无锁的。由于保证了无锁程序的进展,因此保证了它们的完成(假定有限执行而没有例外)。

无等待是一个更强的条件,这意味着无论线程执行的时间/顺序如何,都保证 每个
线程都可以在任意时间段内取得进展。因此我们可以说线程独立完成。所有无需等待的程序都是无锁的。

我不知道有任何Java例子可以说明这一点,但是我可以告诉您,无锁/无等待程序通常是使用CAS指令之类的低级原语实现的,没有锁。

2020-12-03