Я не могу найти хороший ответ на это:C++ - Выполнить функцию каждые X миллисекунд
Я сделать игру, и я хочу, логика цикла быть отделена от графического цикла. Другими словами, я хочу, чтобы игра проходила через цикл каждые X миллисекунд независимо от количества кадров в секунду.
Очевидно, что оба они будут делиться множеством переменных, поэтому я не могу передавать поток/таймер одной переменной взад и вперед ... Я в основном ищут способ иметь таймер в фоновом режиме что каждые X миллисекунды отправляют флаг для выполнения логического цикла, независимо от того, где находится графический цикл.
Я открыт для любых предложений. Кажется, что лучший вариант - иметь 2 потока, но я не уверен, что лучший способ общения между ними - без постоянной синхронизации больших объемов данных.
Лучший вариант - это * не * иметь два потока, если только вам это не нужно. Синхронизация потоков не для слабонервных, и требует значительных усилий, чтобы получить право (без этого быстро превращается в код блокировки-спагетти, во всяком случае). В своем основном цикле просто вызывайте функцию каждый раз, когда количество миллисекунд с момента последнего вызова превышает ваш порог (и затем сбрасывает счетчик). – Cameron
_ «Очевидно, что обе они будут делиться множеством переменных», вы можете делиться данными между потоками. Просто используя [соответствующие механизмы блокировки] (http://en.cppreference.com/w/cpp/thread/mutex) для чтения/записи общих данных для предотвращения условий гонки. Вам не нужно переводить данные_. –
Это действительно простая идея, но вы можете просто заключить цикл вокруг кода в своей основной функции и использовать оператор if для вычисления системных часов для * x * миллисекунд. – Slothrop