Вам нужна блокировка чтения / записи, чтобы разрешить несколько читателей / один писатель.
Boost.Thread имеет один из них ( boost :: shared_mutex ), если у вас нет другой предпочтительной библиотеки потоков.При этом используются примитивы PThreads под оболочками, и, вероятно, вы сэкономите время на самостоятельной упаковке необработанных API.
Я бы не рекомендовал реализовывать это самостоятельно - легко получить что-то, что работает, но при загрузке происходит сбойили убивает производительность, или (что хуже всего) молча изменяет ваши данные так, как это не должно быть, поэтому вы получаете плохие результаты.
Простой boost :: mutex также может быть использован здеськак отмечает @Als, но не разрешает многократное одновременное чтение.Это проще реализовать и может быть достаточно для ваших нужд, в зависимости от вашего профиля доступа для чтения / записи.