> There are trade-offs everywhere, and it's best to pick the data structure that fits your needs just like any other problem.

That part I think is most crucial. Neither "Lock-free" nor "Wait-free" are vague terms for how awesome a thing is, they're specific properties which are expensive to provide, if you need such a property it was indispensable, if you don't need it then you can likely do better without it.

Exactly. I mentioned that those queues aren't formally obstruction-free because the context of the conversation was new developments in wait-free queues, even though I have only needed the guarantee once in my career and end up using descendants of the Vyukov MPMC cycle queue in practically all other cases because they are better on the metrics that count, like speed.

What was the one time when you need something wait free? I'm assuming interacting with hardware?

Hard real-time industrial automation. Worst job ever, by the way.