Я работаю над игрой, поэтому однажды мне пришлось использовать fork()
, основной поток запускает графику opengl, а дочерний поток запускает игровую логику.
Теперь у меня проблема. В какой-то момент пользователь может нажать кнопку «Выход» внутри игры, которая обрабатывается вторичным потоком. Кроме того, в какой-то момент пользователь может нажать кнопку X, чтобы выйти из игры, которая обрабатывается основным (перенасыщенным) потоком. Итак, вот мой вопрос: как я могу убить другой работающий поток и выйти?
Прямо сейчас, если я закрою окно, второй поток продолжит работу, а если второй поток завершит работу, первый продолжит работу.
Обработать кнопку «X» можно с помощью функции atexit
, но я не нашел (безопасного) способа убийства glutMainLoop()
.