boost :: this_thread :: sleep_for () уложил все мои темы в сон

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() предполагается спать только текущий поток?
Если да, что я делаю не так? Если нет, как мне этого добиться?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]