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/cpp/thread/shared_timed_mutex/lock_shared

Spec-Zone.ru

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