Ein Spin-Lock wird 5,7-mal schneller und verbraucht 5,4-mal weniger Energie

Optimizing a Spin-Lock

Ein Spin-Lock wird 5,7-mal schneller und verbraucht 5,4-mal weniger Energie

Ein Spin-Lock bleibt auf der CPU und wartet aktiv, ohne Syscalls oder Kontextwechsel. Der Artikel baut ihn schrittweise um: von einem naiven Exchange-Loop über Memory Ordering und Test-and-Test-and-Set bis zu exponentiellem Backoff. Bei vier Threads sinkt die Laufzeit von 246 ns auf 43 ns, der Energieverbrauch von 64,92 J auf 11,92 J. Die Messungen zeigen, wie sich false Sharing, Branch-Misses und L1-D-Cache-Misses drastisch reduzieren lassen.

In most code, `std::mutex` is still the right default. Consider a spin-lock when the threads are pinned to dedicated cores, and only after measuring.

Mehr von diesem Tag

2026-09-14