Решил я тут разобраться с атомарными командами, что это такое, какими они бывают и что делают. В целом если объяснять на пальцах, то атомарные или неделимые операции, как следуют из названия, неделимые. Т.е. команда либо еще не выполнена, либо уже выполнена, мы не сможем застать эту операцию в середине процесса. Естественно это реализуется за счет аппаратной поддержке. И у разных архитектур эти команды могут и отличаются, но что бы с вами не зарывались в спецификациях разработчики компиляторов унифицировали работу с этими операциями, описание всех команд можно найти в документации к компилятору(например gcc). Читая эту документацию и разбираясь с тем как все это работает, мне пришла в голову идея легкого spinlock'a на атомарных функциях. В чем же легкость этого spinlock'a относительного того же mutex'a?! Легкость заключается в том что эта блокировка не приводит к системному вызову, как например блокировка mutex'a. Итак для создание легкого spinlock'a в userspace нам потребуются 2 фун