У меня в разработке игра Snake (до https://github.com/RobotGymnast/Gingerbread/tree/eventThreaded).) Изначально все (графика, события, обновление логики игры, физика) вызывались из «основного» потока. Затем я начал многопоточность (используя boostЭто было довольно просто, но я недавно разделил логику графического дисплея на новый поток, который выделил экранный объект в его локальном пространстве стека. Затем я разделил свою логику обнаружения и обработки событий на новый поток.мой экран перестал появляться. Судя по выводу командной строки, все по-прежнему работало нормально, просто экран перестал появляться. Оказалось, что он зависает при моем вызове SDL_SetVideoMode ().
Я исправил это, выделив свой экранобъект в "главном" потоке и передача ссылки на графический поток. По какой-то причине выделение экранного объекта в новом потоке из логики событий создавало проблемы.
После этого исправления событие-обнаружение и обработка событий больше не работают.сделано, например, SDL_PollEvent (), но они вообще не получают никаких событий (клавиатура, мышь и т. д.).
Я подозреваю, что SDL может выполнять некоторую закулисную синхронизацию потоков, ноЯ использую темы повышения.Может ли это быть проблемой?Потоки SDL довольно ограничены, и я бы предпочел не переключаться.
У кого-нибудь была эта проблема раньше?Любые рекомендации?