Метод try_write класса RwLock
Метод try_write класса RwLock пытается получить
эксклюзивную блокировку на запись. Если блокировка может быть
получена немедленно, метод возвращает Ok с guard-объектом
RwLockWriteGuard. Если блокировка уже удерживается другим
потоком или ожидается освобождение блокировки, метод возвращает
Err с ошибкой TryLockError. Параметров метод не принимает.
Синтаксис
rwlock.try_write()
Пример
Давайте попробуем получить блокировку на запись, когда она свободна:
use std::sync::RwLock;
fn main()
{
let rwlock = RwLock::new(5);
match rwlock.try_write()
{
Ok(mut guard) =>
{
*guard = 10;
println!("Write lock acquired: {}", *guard);
}
Err(_) =>
{
println!("Write lock not available");
}
}
}
Результат выполнения кода:
"Write lock acquired: 10"
Пример
Давайте попробуем получить блокировку на запись, когда она уже удерживается:
use std::sync::RwLock;
fn main()
{
let rwlock = RwLock::new(5);
let _lock = rwlock.write().unwrap();
match rwlock.try_write()
{
Ok(mut guard) =>
{
*guard = 10;
println!("Write lock acquired: {}", *guard);
}
Err(_) =>
{
println!("Write lock not available");
}
}
}
Результат выполнения кода:
"Write lock not available"
Смотрите также
-
класс
RwLock,
который представляет синхронизационный примитив для множественного чтения и эксклюзивной записи -
метод
write,
который блокирует поток до получения блокировки на запись -
метод
read,
который получает блокировку на чтение -
метод
try_read,
который пытается получить блокировку на чтение без блокировки потока