Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

задержка в микросекундах

80K
16 февраля 2012 года
finger
1 / / 16.02.2012
Мне нужно получить время задержки 5-10 мкс. Мне посоветовали считать такты процессора

int tkt;
double PCFreq = 0.0;
__int64 CounterStart = 0;

void StartCounter()
{
LARGE_INTEGER li;
QueryPerformanceFrequency(&li);

PCFreq = double(li.QuadPart)/1000000.0;

QueryPerformanceCounter(&li);
CounterStart = li.QuadPart;
}
double GetCounter()
{
LARGE_INTEGER li;
QueryPerformanceCounter(&li);
return double(li.QuadPart-CounterStart)/PCFreq;
}

int zaderzhka() //функция организующая задержку
{
StartCounter();
do {
tkt = GetCounter();
}
while(tkt <= /" здесь выставляю задержку "/ );
return 0;
}

Всё работает, но задержка не стабильная, прыгает (+-5 мкс) .
Есть ли ещё какой-нибуль способ организовать задержку в микросекундах?
Если не сложно, то лучше с подробностями, я с С++ общаюсь только полторы недели)
10K
16 февраля 2012 года
Cybernetic
106 / / 22.07.2009
Можно использовать всеумеющий boost. Там можно время измерять в наносекундах (в микро не нашел, но что мешает вписать тысячу наносекунд?). Пример использования вкратце. Смотреть лучший ответ.

Если не нужно опускаться до таких мелочей и использовать миллисекунды, то стандартный sleep к вашим распоряжениям. Если не хотите ставить либу (а вообще рекомендую попробовать, хорошая вещь, и во многих вопросах на нее ссылаются), то тогда вашим способом. Нашел еще один пример его использования.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог