Пока я просматриваю справочную страницу функции pthread_rwlock_unlock, я заметил, что функция вернет EPERM, если вызывающий поток не владеет rwlock.
Поскольку rdlock разрешает несколько потоков t Чтобы получить блокировку, должна существовать структура данных, такая как ссылка или массив для хранения идентификатора владельца одного конкретного rwlock.
Здесь возникает вопрос:
rwlock разработан для достижения эффективности, когда операция чтения намного больше чаще, чем операции записи, но если существует большое количество различных потоков, получивших блокировку чтения, каждый раз, когда я вызываю pthread_rwlock_unlock (), требуется время, чтобы узнать, является ли вызывающий поток действительным владельцем. какова временная сложность этого сценария ..
Большое спасибо, ребята :)