У меня есть многопоточное приложение C ++, которое выполняет 3D-рендеринг с помощью библиотеки OpenSceneGraph. Я планирую запустить цикл рендеринга OSG как отдельный поток, используя boost :: threads, передавая структуру данных, содержащую разделяемое состояние, в поток. Я стараюсь избегать чего-либо слишком тяжелого (например, мьютексов) для синхронизации, поскольку цикл рендеринга должен быть довольно узким, а сама OSG старается избегать блокировки. Большая часть общего состояния устанавливается до запуска потока и никогда не изменяется. У меня есть некоторые данные, которые нужно изменить, и я планирую создать двойной буфер. Тем не менее, у меня есть простое логическое значение для оповещения потока о приостановке рендеринга, последующего возобновления рендеринга и другого для его прекращения. В обоих случаях поток приложения устанавливает bool, а поток визуализации только читает его. Нужно ли синхронизировать доступ к этим bools? Насколько я могу судить, хуже всего может быть то, что цикл рендеринга продолжается для дополнительного кадра перед приостановкой или выходом.