Tenho um aplicativo multithread que precisa ler alguns dados com frequência e, ocasionalmente, esses dados são atualizados. No momento, um mutex mantém o acesso a esses dados seguro, mas é caro porque eu gostaria que vários threads pudessem ler simultaneamente, e apenas bloqueá-los quando uma atualização for necessária (o thread de atualização pode esperar que os outros threads terminem) .
Acho que é isso que boost::shared_mutex
se deve fazer, mas não tenho certeza de como usá-lo e não encontrei um exemplo claro.
Alguém tem um exemplo simples que eu possa usar para começar?