Я нашел решение: использовать pthread_rwlock_t
(ReaderWriterLock в Windows). Эти блокировки не требуют определенного max_readers_count.
Я подозреваю, что реализация для этой блокировки использует некоторую переменную условия, чтобы заблокировать запись читателей, когда писателю нужно написать и атомарное число читателей.
Сравнение этого с моим доморощенным замком, основанным на семафоре, показывает, что авторам нравится (они, как правило, запускаются первыми).