Un spin-lock 5.7 veces más rápido y con 5.4 veces menos energía
Optimizing a Spin-Lock

Un spin-lock no duerme: el hilo gira en la CPU sin llamadas al sistema ni cambios de contexto. Partiendo de un exchange atómico ingenuo que a cuatro hilos tarda 246 ns y consume 64.92 J, el autor aplica ordenación de memoria acquire/release, test-and-test-and-set con _mm_pause y retroceso exponencial. El resultado: 43 ns y 11.92 J, con las mismas garantías. Aun así, std::mutex sigue siendo el valor por defecto salvo que los hilos estén fijados a núcleos dedicados y se mida antes.
En la mayoría del código, std::mutex sigue siendo el valor por defecto correcto. Considera un spin-lock cuando los hilos estén fijados a núcleos dedicados, y solo después de medir.