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

Функция atomic.StoreInt64

Функция atomic.StoreInt64 из пакета sync/atomic выполняет атомарную запись значения типа int64 в переменную, переданную по указателю. Это означает, что операция записи будет выполнена как единое целое без возможности прерывания, что критически важно при работе с разделяемыми данными в конкурентной среде. Первым параметром функция принимает указатель на переменную типа int64, в которую производится запись, вторым параметром — новое значение, которое необходимо сохранить.

Синтаксис

atomic.StoreInt64(addr *int64, val int64)

Пример использования

В этом примере мы атомарно записываем значение в переменную counter:

package main import ( "fmt" "sync/atomic" ) func main() { var counter int64 atomic.StoreInt64(&counter, 100) fmt.Println(counter) }

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

100

Пример с конкурентным доступом

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

package main import ( "fmt" "sync" "sync/atomic" ) func main() { var value int64 var wg sync.WaitGroup for i := 0; i < 5; i++ { wg.Add(1) go func(v int64) { defer wg.Done() atomic.StoreInt64(&value, v) }(int64(i)) } wg.Wait() fmt.Println(atomic.LoadInt64(&value)) }

Результат выполнения кода (конкретное значение может варьироваться):

4

Пример использования в структуре

Рассмотрим пример использования атомарной записи в поле структуры:

package main import ( "fmt" "sync/atomic" ) type Config struct { version int64 } func main() { cfg := &Config{} atomic.StoreInt64(&cfg.version, 42) fmt.Println(atomic.LoadInt64(&cfg.version)) }

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

42

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

  • функцию atomic.LoadInt64,
    которая атомарно читает значение типа int64
  • функцию atomic.AddInt64,
    которая атомарно прибавляет значение к переменной
  • функцию atomic.SwapInt64,
    которая атомарно заменяет значение и возвращает старое
  • функцию atomic.CompareAndSwapInt64,
    которая выполняет атомарное сравнение и замену значения
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить