Существует ли широко используемая реализация WinAPI для блокировки чтения и записи? Я только нашел одна реализация и не знаю, если это надежно.
Win32 Critical Sections используют несколько спинов перед ожиданием. У вас есть только 2 читателя потока и редких записей. Просто используйте один критический раздел для всего, и я думаю, вы получите очень хорошее соотношение производительности и простоты. Возможно, вы захотите использовать RAII идиому, чтобы предотвратить выход из CS пути.
В WinXP API такой блокировки нет.
Вы можете использовать shared_mutex от boost. пример. Кстати, такие блокировки имеют смысл, когда у вас много читателей и несколько случайных писателей. Если это не ваш случай — просто используйте mutex (критический раздел).