Вы правы, что он на самом деле не предоставляет такую функциональность, но это потому, что она не нужна.Его можно эмулировать с помощью операций, которые уже существуют .
atomic_fetch_add
- это атомарная операция, которая выбирает текущее значение, а затем что-то добавляет.Это «что-то» полностью находится под вашим контролем и не изменяется atomic_fetch_add
.
. Стандарт гарантирует, что:
- Возвращается старое значение;и
- Значение добавляется.
Затем вы можете просто самостоятельно добавить значение к тому, что было возвращено, и у вас будет текущее значение на момент выполнения атомарной операции.Итак, в основном:
def atomic_add_fetch (item, addendum):
return atomic_fetch_add (item, addendum) + addendum
- это псевдокод для операции atomic_add_fetch
.