Já se toho nebojím. Já nechci ztrácet čas a nervy a energii s tím dělat něco složitě, když to jde jednoduše.
V pohodě, je to tvoje volba, když chceš STM, používej STM, nic proti tomu nemám. Dělal jsem v C++ věci, u kterých byl kritický výkon a STM nebyla volba. I u mutexu se často řešila režije a hledala se nějaká lockless alternativa.
QED?
Matematický důkaz ti nedám, je to prostě můj subjektivní dojem. Než se drbat s condition variables mezi thready, tak na takové jednoduché čekání prostě použiju timed_mutex s nějakým rozumným sleepem. Není to úplně ideální řešení, protože když je tam ten sleep, jsou tam nějaké probuzení threadu navíc a o změně se dozvíš až se zpožděním sleepu, ale pokud to nevadí, je pro mě timed_mutex jasná volba.