Я пишу приложение на основе FLTK GUI - RAM Machine.C++ FLTK 1.3.2: обновленный экран, обработка событий и неблокирующий сон
Я бы хотел, чтобы мой метод спал, скажем, через 1 секунду после каждого выполненного заказа, поддерживать экран в актуальном состоянии и доступным, а не блокировать обработку событий и т. Д. Одновременно. И проблема в том, что каждая функция, которую я использую, используется для случайного времени.
Например:
void FlowControl::_runProgram (void) {
//Inside a loop:
_step(); //execute next order
clock_t start = timer.start(); //initialize clock
do{
//wait max. 1-passed_time() [seconds] until 'something happens'
Fl::wait(1-timer.passed_time());
}while (timer.passed_time() < 1); // check if 1 second has passed
//...
}
Результат: GUI не блокирует, все работает, но я должен ждать между 0 и даже 6 (!!) секунды вместо ровно один второй для следующего шага.
Что я уже пробовал: Fl :: wait()/Fl :: check()/Fl :: ready() + Sleep()/SetTimer()/clock_t/time_t с или без многопоточности.
Как решить эту проблему?
FLTK документ: http://www.fltk.org/doc-1.3/index.html