Spec-Zone.ru › C++

std::shared_timed_mutex::lock_shared

void lock_shared();
(с C++14)

Приобретает совместное владение мьютексом. Если другой поток владеет мьютексом в режиме эксклюзивного доступа, вызов lock_shared заблокирует выполнение, пока совместное владение не будет получено.

Если lock_shared вызывается потоком, который уже владеет mutex в любом режиме (эксклюзивном или совместном), поведение не определено.

Если число потоков, уже заблокировавших мьютекс в режиме совместного доступа, превышает максимально допустимое значение, определённое реализацией, lock_shared заблокирует выполнение, пока число потоков, владеющих мьютексом в режиме совместного доступа, не уменьшится. Максимальное число владельцев гарантированно не меньше 10000.

Предыдущая unlock() операция над тем же мьютексом синхронизируется с (как определено в std::memory_order) этой операцией.

Параметры

(нет)

Возвращаемое значение

(нет)

Исключения

Выбрасывает std::system_error при возникновении ошибок, включая ошибки из базовой операционной системы, которые препятствуют lock удовлетворению своих спецификаций. Мьютекс не блокируется в случае выбрасывания любого исключения.

Примечания

lock_shared() обычно не вызывается напрямую: используется std::shared_lock для управления совместным блокированием.

Пример

См. также

lock
блокирует мьютекс, блокируется, если мьютекс недоступен
(публичный член-функция)
try_lock_shared
пытается заблокировать мьютекс для совместного доступа, возвращает, если мьютекс недоступен
(публичный член-функция)
unlock_shared
разблокирует мьютекс (совместное владение)
(публичный член-функция)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/thread/shared_timed_mutex/lock_shared

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API