Как заснуть с boost::chrono?

Примеры boost::this_thread::sleep(), похоже, используют объекты boost::posix_time::milliseconds. Я пробовал это, и это работает, но я использую boost::chrono для проверки системных часов и так далее. Мне кажется, я должен передать sleep() a chrono::duration вот так:

boost::this_thread::sleep( boost::chrono::duration(10) );

Но компилятор выдает мне следующую ошибку:

... boostboost::this_thread::sleep()49_0\boost/thread/win32/thread_data.hpp(171): ошибка C2039: 'total_milliseconds': не является членом 'boost::chrono::duration'

Что я нахожу запутанным. Правильно ли я думаю, что я должен быть в состоянии сделать это? Нужно ли будет конвертировать в posix_time?


person 2NinerRomeo    schedule 03.03.2012    source источник
comment
Я должен был упомянуть, что хотел бы спать в течение миллисекунд, а не секунд. Я попытался передать следующие аргументы: boost::chrono::milliseconds(10) boost::chrono::duration<long, boost::milli>(10)   -  person 2NinerRomeo    schedule 05.03.2012
comment
Я жду эту функцию, так как хроно был добавлен для ускорения ... я надеюсь, что она наконец попадет в следующий выпуск!   -  person moka    schedule 21.03.2012


Ответы (1)


Таким образом, используйте sleep_for и seconds

boost::this_thread::sleep_for( boost::chrono::seconds(10) );

РЕДАКТИРОВАТЬ

После проверки эта функция еще недоступна в boost 1.49.0. Приношу свои извинения. Это работает только в магистральной версии boost.

Это означает, что невозможно вызвать спящую функцию без преобразования в формат boost.datetime.

person J.N.    schedule 03.03.2012
comment
Я получаю error C2039: 'sleep_for' : is not a member of 'boost::this_thread' Я пропустил что-то раньше, но я не вижу этого в документации для 'this_thread' [boost.org/doc/libs/1_49_0/doc/html/thread/, хотя кажется, что это может быть частью std::this_thread в С++11. - person 2NinerRomeo; 05.03.2012
comment
Я не могу подтвердить сразу, но, возможно, я упомянул функцию в дереве разработки Boost, а не релиз (у меня он скомпилировался нормально). Попробую сегодня чуть позже проверить, приношу свои извинения. - person J.N.; 06.03.2012
comment
@2NinerRomeo: плохо, эта функция еще не выпущена. Снова простите. - person J.N.; 06.03.2012