

Meanwhile, some locks avoid this shared data movement by localizing the access to shared data on one core, and shipping the critical section to that specific core. This design adds unavoidable critical path latency leading to performance scalability issues. Locks, as used in practice, move the lock-guarded shared data to the core holding it, which leads to shared data transfer among cores. While locks ensure mutual exclusion of shared data, their design impacts application scalability.

Today's high-performance applications heavily rely on various synchronization mechanisms, such as locks.
