On Wed, 3 Aug 2016, Andy Lutomirski wrote:
quoted
Well, a CMPXCHG without LOCK prefix isn't all that expensive on x86.
It is however on PPC and possibly other architectures, so in name of
simplicity supporting only the one variant makes sense.
I wouldn't want to depend on CMPXCHG. But imagine we had primitives
that were narrower than the full abort-on-preemption primitive.
Specifically, suppose we had abort if (actual cpu != expected_cpu ||
*aptr != aval). We could do things like:
The latency issues that are addressed by restartable sequences require
minimim instruction overhead. Lockless CMPXCHG is very important in that
area and I would not simply remove it from consideration.