Метод read
Метод read класса RwLock захватывает блокировку
на чтение. Пока хотя бы один поток удерживает блокировку на чтение,
другие потоки также могут захватывать блокировку на чтение,
но ни один поток не может захватить блокировку на запись.
Метод возвращает объект RwLockReadGuard, который
автоматически освобождает блокировку при выходе из области видимости.
Параметров метод не принимает.
Синтаксис
rwlock.read()
Пример
Давайте создадим RwLock с числом и прочитаем
значение через метод read:
use std::sync::RwLock;
fn main()
{
let lock = RwLock::new(5);
let res = lock.read().unwrap();
println!("{}", res);
}
Результат выполнения кода:
5
Пример
Давайте захватим несколько блокировок на чтение
одновременно, что разрешено для RwLock:
use std::sync::RwLock;
fn main()
{
let lock = RwLock::new(5);
let r1 = lock.read().unwrap();
let r2 = lock.read().unwrap();
println!("{} {}", r1, r2);
}
Результат выполнения кода:
5 5
Пример
Давайте прочитаем значение из RwLock
со строкой:
use std::sync::RwLock;
fn main()
{
let lock = RwLock::new("abcde");
let res = lock.read().unwrap();
println!("{}", res);
}
Результат выполнения кода:
"abcde"