Earlier quoted context omitted.
Note it's important to be "wait-free" and not just "lock-free". The first item here does appear to be "wait-free".
I am curious about your definition of wait-free and lock-free. There are a number of conflicting definitions for these two terms floating around the internet. If we take a very simple problem, incrementing a shared counter and doing some other work and returning its new value. In pseudo-code (with no exception handling). --- A lock based solution would look like this public void inc() { this.l.lock() this.value++ thi…
Most people I've meet though assume lock-free just implies not using mutexes, but that spin-locks are fine. There appears to be a conflict between this definition (the one you've given) and the theoretical one.
I generally stick to the term "wait-free" since it's meaning is less ambiguous.