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

Тип AtomicI32

Тип AtomicI32 представляет собой атомарное 32-битное целое число со знаком. Он позволяет безопасно читать и изменять значение из нескольких потоков одновременно без использования мьютексов. Все операции над типом выполняются атомарно, то есть другие потоки видят либо старое, либо новое значение, но никогда промежуточное. Для каждой операции указывается порядок доступа к памяти через тип Ordering. Создать значение можно методом new, а также через связанные константы, например AtomicI32::new(0).

Синтаксис

use std::sync::atomic::AtomicI32; AtomicI32::new(value)

Пример

Давайте создадим атомарное число со значением 5 и прочитаем его с порядком Ordering::SeqCst:

use std::sync::atomic::{AtomicI32, Ordering}; fn main() { let atomic = AtomicI32::new(5); let val = atomic.load(Ordering::SeqCst); println!("{}", val); }

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

5

Пример

Давайте увеличим атомарное значение на 10 методом fetch_add и выведем результат:

use std::sync::atomic::{AtomicI32, Ordering}; fn main() { let atomic = AtomicI32::new(32); let old = atomic.fetch_add(10, Ordering::SeqCst); let new = atomic.load(Ordering::SeqCst); println!("old = {}, new = {}", old, new); }

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

old = 32, new = 42

Пример

Давайте заменим значение атомарного числа методом store и выведем новое значение:

use std::sync::atomic::{AtomicI32, Ordering}; fn main() { let atomic = AtomicI32::new(0); atomic.store(-7, Ordering::SeqCst); let val = atomic.load(Ordering::SeqCst); println!("{}", val); }

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

-7

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

  • тип AtomicUsize,
    который представляет атомарное беззнаковое число
  • тип AtomicBool,
    который представляет атомарное логическое значение
  • перечисление Ordering,
    которое задаёт порядок доступа к памяти
  • функция fence,
    которая устанавливает барьер памяти
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить