void WINEvents::loop()
{
while (true)
{
boost::this_thread::sleep_for(boost::chrono::milliseconds(500));
//boost::this_thread::sleep(boost::posix_time::milliseconds(500));
/*boost::mutex mutex;
boost::condition_variable_any condition;
boost::unique_lock<boost::mutex> lock(mutex);
condition.wait_for(lock, boost::chrono::milliseconds(500));*/
}
}
void SDLplateforme::execute()
{
WINEvents winEvents;
boost::thread newThread(WINEvents::loop, &winEvents);
while (true)
{
#####EDIT:
auto time = Int2String(_timer->getTicks());
SDL_SetWindowTitle(_window, time.c_str());
}
}
int main(int argc, char *argv[])
{
auto plateforme = make_shared<SDLplateforme>();
boost::thread mainThread(SDLplateforme::execute, plateforme);
mainThread.join();
return 0;
}
Я создаю две темы:
SDLplateforme::execute()
-> постоянно отображать значение таймера в рамке окна
WINEvents::loop()
-> укладывается спать с помощью boost::this_thread::sleep
Но, кажется, вызов сна в WINEvents::loop()
также заставьте другой поток спать, так как текст отображается с интервалом, равным параметру сна (здесь 500 мс), тогда как он должен обновляться каждый кадр.
Является boost::this_thread::sleep()
предполагается спать только текущий поток?
Если да, что я делаю не так? Если нет, как мне этого добиться?
Задача ещё не решена.
Других решений пока нет …