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

Функция new класса Mutex

Функция new класса Mutex создает новый мьютекс, который оборачивает переданное значение. Мьютекс обеспечивает безопасный доступ к данным из нескольких потоков, позволяя только одному потоку одновременно владеть блокировкой. Параметром функция принимает значение, которое нужно защитить мьютексом.

Синтаксис

Mutex::new(value)

Пример

Давайте создадим мьютекс, оборачивающий целое число 5:

use std::sync::Mutex; fn main() { let m = Mutex::new(5); println!("{:?}", m); }

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

Mutex { data: 5, poisoned: false, .. }

Пример

Давайте создадим мьютекс, оборачивающий вектор чисел, и получим значение с помощью метода lock:

use std::sync::Mutex; fn main() { let m = Mutex::new(vec![1, 2, 3, 4, 5]); let guard = m.lock().unwrap(); println!("{:?}", *guard); }

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

[1, 2, 3, 4, 5]

Пример

Давайте создадим мьютекс, оборачивающий строку, и изменим защищенное значение через блокировку:

use std::sync::Mutex; fn main() { let m = Mutex::new(String::from("abcde")); { let mut guard = m.lock().unwrap(); guard.push_str("12345"); } let guard = m.lock().unwrap(); println!("{}", *guard); }

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

"abcde12345"

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

  • класс Mutex,
    который представляет мьютекс для безопасного доступа к данным
  • метод lock,
    который блокирует мьютекс и возвращает guard для доступа к данным
  • метод try_lock,
    который пытается заблокировать мьютекс без ожидания
  • метод into_inner,
    который извлекает значение из мьютекса
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить