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

Функция atomic.LoadInt32

Функция atomic.LoadInt32 используется для атомарного чтения 32-битного целого числа (тип int32) из памяти. В первый параметр мы передаем указатель на переменную типа int32, значение которой хотим атомарно прочитать. Функция возвращает текущее значение этой переменной. Это гарантирует, что операция чтения будет выполнена неделимо и результат не будет содержать промежуточных значений, возникающих при конкурентной записи.

Синтаксис

atomic.LoadInt32(addr *int32) int32

Пример

Давайте рассмотрим базовый пример использования функции atomic.LoadInt32 для чтения значения переменной:

package main import ( "fmt" "sync/atomic" ) func main() { var value int32 = 100 res := atomic.LoadInt32(&value) fmt.Println(res) }

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

100

Пример

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

package main import ( "fmt" "sync" "sync/atomic" ) func main() { var value int32 = 0 var wg sync.WaitGroup for i := 0; i < 1000; i++ { wg.Add(1) go func() { atomic.AddInt32(&value, 1) wg.Done() }() } wg.Wait() res := atomic.LoadInt32(&value) fmt.Println(res) }

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

1000

Пример

Используем функцию atomic.LoadInt32 вместе с atomic.CompareAndSwapInt32 для безопасной проверки и изменения значения:

package main import ( "fmt" "sync/atomic" ) func main() { var value int32 = 10 oldValue := atomic.LoadInt32(&value) if atomic.CompareAndSwapInt32(&value, oldValue, 20) { fmt.Println("Update successful") } res := atomic.LoadInt32(&value) fmt.Println(res) }

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

"Update successful" 20

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

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