Функция 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,
который извлекает значение из мьютекса