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

Метод write класса RwLock

Метод write класса RwLock используется для получения исключительной блокировки на запись. Пока поток удерживает такую блокировку, ни один другой поток не может получить ни блокировку на чтение, ни блокировку на запись. Метод блокирует текущий поток до тех пор, пока блокировка не станет доступной, и возвращает объект RwLockWriteGuard. Если во время удержания блокировки на запись другой поток попытается получить доступ к данным, произойдёт взаимная блокировка (deadlock).

Параметров метод не принимает. Он вызывается у экземпляра RwLock и паникует, если во время ожидания блокировки произошла ошибка, связанная с блокировкой. Возвращаемое значение - LockResult<RwLockWriteGuard<T>>, из которого обычно извлекают сам guard через unwrap.

Синтаксис

rwlock.write()

Пример

Давайте создадим RwLock с числом и запишем в него новое значение через метод write:

use std::sync::RwLock; fn main() { let rwlock = RwLock::new(5); { let mut guard = rwlock.write().unwrap(); *guard = 10; } let res = *rwlock.read().unwrap(); println!("{}", res); }

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

10

Пример

Давайте используем RwLock с вектором и добавим в него новый элемент через метод write:

use std::sync::RwLock; fn main() { let rwlock = RwLock::new(vec![1, 2, 3]); { let mut guard = rwlock.write().unwrap(); guard.push(4); } let res = rwlock.read().unwrap(); println!("{:?}", *res); }

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

[1, 2, 3, 4]

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

  • класс RwLock,
    который представляет примитив синхронизации с разделением доступа
  • метод new,
    который создаёт новый экземпляр RwLock
  • метод read,
    который получает блокировку на чтение
  • метод try_write,
    который пытается получить блокировку на запись без ожидания
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить