From: Gavin Lambert (boost_at_[hidden])
Date: 2023-06-02 00:24:46


On 2/06/2023 11:43, Peter Dimov wrote:
> Gavin Lambert wrote:
>> FWIW though, atomic_* on shared_ptr is entirely banned in my codebase
>> precisely because of its spinlock implementation.
>
> Which part is wrong?

Caused massive performance issues in my codebase. Not really a fault of
your implementation per se (other than it's a spinlock at all), just a
consequence of priority inversion plus too many collisions in the
spinlock pool. Probably not something that would be a problem for most
apps; I just have some special quirks.

It's not only spinlocks (though they're worse than regular locks); any
locks at all have to justify themselves pretty hard (I use a lot of
lock-free techniques and structures, and non-blocking "locks" like
strands and workqueues).

I have a custom lock that behaves better in my environment, so it's nice
when things that do require a lock either leave the app to handle that
externally or allow it to be configured via template.