И я хочу обрабатывать события нажатия клавиш без прерывания основного потока.
SDL по своей природе не является платформой, управляемой прерываниями или событиями.IO происходит путем чтения событий из очереди событий путем вызова SDL_WaitEvent
или SDL_PollEvent
.Это должно происходить в потоке " main ", который вызвал SDL_SetVideoMode
.
Это не означает, что вы не можете использовать несколько потоков, и для этого есть веские основания, например, он может упростить сетевое взаимодействие, если ему не нужно полагаться на цикл событий SDL.Если вы хотите, чтобы моделирование происходило в отдельном потоке, тогда оно может передавать информацию назад и вперед через синхронизированные общие объекты.В частности, вы всегда можете безопасно помещать события в очередь событий SDL из любого потока.