Я не могу найти семантическое различие между блокировкой и блокировкой атома. Насколько я могу судить, разница семантически бессмысленна в отношении языка, поскольку язык не предоставляет никаких гарантий времени. Единственные гарантии, которые я могу найти, - это гарантии упорядочения памяти, которые кажутся одинаковыми для обоих случаев.
(Как) может ли блокировка атомарности влиять на семантику программы?
i.e., кроме вызова is_lock_free
или atomic_is_lock_free
, можно ли написать четко определенную программу, на поведение которой действительно влияет то, являются ли атомы блокировки?
Имеют ли эти функции даже смысловое значение? Или это просто практические хаки для написания отзывчивых программ, хотя язык никогда не обеспечивает гарантии времени в первую очередь?