Middle+
39
0
questionbank

Что такое атомарные операции, какие их виды существуют, и когда и как их лучше использовать?

Answer from sobes.tech neural network

Атомарные операции — это операции над памятью, выполнение которых гарантированно завершается либо полностью, либо не начинается вовсе, и они не могут быть прерваны другими конкурирующими операциями. Они являются неделимыми и потокобезопасными на аппаратном уровне.

В Go пакет sync/atomic предоставляет набор функций для выполнения атомарных операций:

ФункцияОписание
AddInt32Атомарно добавляет значение к int32.
AddInt64Атомарно добавляет значение к int64.
AddUint32Атомарно добавляет значение к uint32.
AddUint64Атомарно добавляет значение к uint64.
AddUintptrАтомарно добавляет значение к uintptr.
CompareAndSwapInt32Атомарно сравнивает и обменивает (CAS) int32.
CompareAndSwapInt64Атомарно сравнивает и обменивает (CAS) int64.
CompareAndSwapUint32Атомарно сравнивает и обменивает (CAS) uint32.
CompareAndSwapUint64Атомарно сравнивает и обменивает (CAS) uint64.
CompareAndSwapUintptrАтомарно сравнивает и обменивает (CAS) uintptr.
CompareAndSwapPointerАтомарно сравнивает и обменивает (CAS) unsafe.Pointer.
LoadInt32Атомарно загружает значение int32.
LoadInt64Атомарно загружает значение int64.
LoadUint32Атомарно загружает значение uint32.
LoadUint64Атомарно загружает значение uint64.
LoadUintptrАтомарно загружает значение uintptr.
LoadPointerАтомарно загружает значение unsafe.Pointer.
StoreInt32Атомарно сохраняет значение int32.
StoreInt64Атомарно сохраняет значение int64.
StoreUint32Атомарно сохраняет значение uint32.
StoreUint64Атомарно сохраняет значение uint64.

Атомарные операции — это операции над памятью, выполнение которых гарантированно завершается либо полностью, либо не начинается вовсе, и они не могут быть прерваны другими конкурирующими операциями. Они являются неделимыми и потокобезопасными на аппаратном уровне.

В Go пакет sync/atomic предоставляет набор функций для выполнения атомарных операций:

ФункцияОписание
AddInt32Атомарно добавляет значение к int32.
AddInt64Атомарно добавляет значение к int64.
AddUint32Атомарно добавляет значение к uint32.
AddUint64Атомарно добавляет значение к uint64.
AddUintptrАтомарно добавляет значение к uintptr.
CompareAndSwapInt32Атомарно сравнивает и обменивает (CAS) int32.
CompareAndSwapInt64Атомарно сравнивает и обменивает (CAS) int64.
CompareAndSwapUint32Атомарно сравнивает и обменивает (CAS) uint32.
CompareAndSwapUint64Атомарно сравнивает и обменивает (CAS) uint64.
CompareAndSwapUintptrАтомарно сравнивает и обменивает (CAS) uintptr.
CompareAndSwapPointerАтомарно сравнивает и обменивает (CAS) unsafe.Pointer.
LoadInt32Атомарно загружает значение int32.
LoadInt64Атомарно загружает значение int64.
LoadUint32Атомарно загружает значение uint32.
LoadUint64Атомарно загружает значение uint64.
LoadUintptrАтомарно загружает значение uintptr.
LoadPointerАтомарно загружает значение unsafe.Pointer.
StoreInt32Атомарно сохраняет значение int32.
StoreInt64Атомарно сохраняет значение int64.
StoreUint32Атомарно сохраняет значение uint32.
StoreUint64Атомарно сохраняет значение uint64.

Register or sign in to get access to full answers for all questions from the question bank.

concurrencydatabase-transactionsatomicitylockingacid-properties