2013-07-18 3 views

ответ

0

Если вы хотите очень предсказуемые короткие задержки, вы можете написать небольшую утилиту командной строки, которая вызывает nanosleep.

#include <stdio.h> 
#include <time.h> 
#include <stdint.h> 
#include <sys/time.h> 

int main(int argc, char *argv[]) { 
    struct timespec ts; 

    // We want to sleep for 40ms 
    ts.tv_sec = 0; 
    ts.tv_nsec = 40L * 1000000L; // 1ms = 1 million nanoseconds 
    nanosleep(&ts, NULL); 
    return 0; 
} 

Конечно, утилита может быть сделана намного более гибкой, получив задержку из командной строки.

EDIT: как отмечают комментаторы, nanosleep недоступен в стандартном компиляторе MS. В качестве альтернативы можно использовать sleep.

+0

+1: Но непредсказуемой частью является поведение загрузки/запуска – jeb

+0

Да, но гораздо более предсказуемым, чем примеры. Тем не менее, я предполагаю, что вопрос касается MS, а nanosleep - POSIX! Во всяком случае, это пакетный вопрос, а не программирование! –

+0

@jeb Я согласен, но на самом деле я не вижу возможности избавиться от этой части неопределенности, вы можете просто попытаться сделать утилиту настолько крошечной, насколько это возможно, чтобы максимально сократить время загрузки, но это все. – fvu

1

Я полагаю, самый короткий точный время 10мс, с чистой партией. С проверкой переменной %time% (разрешение составляет 10 мс).

wmic или другие внешние программы имеют недостаток, что время загрузки & начать их чаще всего дольше, чем время ожидания.

Смежные вопросы