Есть несколько полезных способов использовать синхронизацию без блокировки (например, упоминания @Tudor).Но я хочу предупредить об одном: синхронизация без блокировок не составляет.
Например, у вас может быть целое число, поддерживаемое сравнением и заменой, и это нормально.У вас также может быть очередь, поддерживаемая алгоритмами без блокировки (это немного сложно, но есть хорошие алгоритмы для этого), и очередь тоже в порядке.
Но если вы попытаетесь использовать счетчик для подсчетаэлементы в очереди, вы получите неправильные ответы.Будут случаи, когда элемент был добавлен, но счетчик еще не отражает его (или наоборот), и вы можете получать ошибки, если доверяете ему (например, можете попытаться добавить в полную очередь).
Вкратце - каждый элемент может быть согласован с самим собой, но не согласован между собой.