Спящий поток ускорения на несколько наносекунд

Я хочу, чтобы поток ускорения засыпал на несколько наносекунд. Следующий код представляет собой образец, который компилируется без ошибок. Однако это не работает должным образом, и я не могу понять, почему.

#include   
#include 
#include 
#include 
//Building options:
//-DBOOST_DATE_TIME_POSIX_TIME_STD_CONFIG -lboost_date_time-mt -lboost_thread-mt 
void replay()  
{
    boost::posix_time::time_duration time1, time2; 

    time1=boost::posix_time::seconds(3);
    std::cout << boost::posix_time::to_simple_string(time1) << std::endl;
    boost::this_thread::sleep(time1);

    time2=boost::posix_time::nanoseconds(987654321);
    std::cout << boost::posix_time::to_simple_string(time2) << std::endl;
    boost::this_thread::sleep(time2); 
}
int main(int argc, char* argv[])  
{  
    boost::thread replaythread(replay);  
    replaythread.join();
    return 0;  
}

BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG - это определение препроцессора, необходимое для работы с наносекундами ( дополнительная информация ). Проблемы возникают, когда я устанавливаю параметр построения -DBOOST_DATE_TIME_POSIX_TIME_STD_CONFIG, тогда boost :: this_thread :: sleep не работает ни для одного posix :: time_duration. Созданный поток использует весь ЦП, не спит и не обрабатывает оставшиеся инструкции. Если определение препроцессора удалено, поток может спать в течение любого периода времени, кроме boost :: posix_time :: nanoseconds. Программа использует некоторые переменные time_duration для хранения наносекунд, из-за чего boost :: this_thread :: sleep не работает.

Большое спасибо за ваше время

6
задан Emer 11 July 2011 в 12:57
поделиться