РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
870 of 1593 menu

Функция atomic.AddUint64

Функция atomic.AddUint64 из пакета sync/atomic выполняет атомарное прибавление указанного значения к переменной типа uint64 и возвращает новое значение. Первым параметром функция принимает указатель на переменную типа uint64, вторым параметром - значение типа uint64, которое нужно прибавить.

Эта функция гарантирует, что операция сложения будет выполнена атомарно без использования блокировок. Она особенно полезна при работе с счетчиками и накопителями в конкурентных программах.

Синтаксис

atomic.AddUint64(addr *uint64, delta uint64) uint64

Пример

Давайте создадим переменную типа uint64 и атомарно прибавим к ней значение 42:

package main import ( "fmt" "sync/atomic" ) func main() { var counter uint64 = 10 newVal := atomic.AddUint64(&counter, 42) fmt.Println(newVal) }

Результат выполнения кода:

52

Пример

Давайте используем функцию для атомарного увеличения счетчика в нескольких горутинах:

package main import ( "fmt" "sync" "sync/atomic" ) func main() { var counter uint64 = 0 var wg sync.WaitGroup for i := 0; i < 1000; i++ { wg.Add(1) go func() { defer wg.Done() atomic.AddUint64(&counter, 1) }() } wg.Wait() fmt.Println(counter) }

Результат выполнения кода:

1000

Пример

Давайте используем возвращаемое значение функции для проверки нового значения счетчика:

package main import ( "fmt" "sync/atomic" ) func main() { var counter uint64 = 5 newVal := atomic.AddUint64(&counter, 10) if newVal > 10 { fmt.Println("new value is greater than 10") } fmt.Println(newVal) }

Результат выполнения кода:

"new value is greater than 10" 15

Смотрите также

  • функцию atomic.AddInt32,
    которая атомарно прибавляет значение к int32
  • функцию atomic.AddInt64,
    которая атомарно прибавляет значение к int64
  • функцию atomic.LoadUint64,
    которая атомарно загружает значение uint64
  • функцию atomic.StoreUint64,
    которая атомарно сохраняет значение uint64
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить