таймер Windows Media vs time.h какой из них будет более надежным в системе реального времени? - PullRequest
0 голосов
/ 29 мая 2010

Я использую функцию сна в ANSI-C, которая дает разрешение до миллисекунд, но не совсем, я столкнулся с неопределенными задержками, люди предлагают мне использовать Windows Media Таймер,

Я хочу узнать, насколько они оба надежны, чтобы использовать их в системе реального времени или использовать что-то еще,

Спасибо заранее.

Ответы [ 2 ]

1 голос
/ 29 мая 2010

Я разработал эту функцию для машин Linux и MacOSX. Я надеюсь, что это может помочь вам.

// t => мили секунд

void Wait(unsigned long t)
{
#if defined(_LINUX) || defined(__APPLE__)
    time_t secs;
    long   milisecs,
           nanosecs;
    struct timespec waittime;

    secs     = t / 1000L;
    milisecs = t - (secs * 1000L);
    nanosecs = milisecs * 1000000L;
    waittime.tv_sec   = secs;
    waittime.tv_nsec  = nanosecs;

    nanosleep(&waittime, NULL);
#else      
    struct timeval timeout;

    timeout.tv_sec  = 0;
    timeout.tv_usec = t * 1000L;

    select(0, NULL, NULL, NULL, &timeout);
#endif
}
0 голосов
/ 19 июня 2010

Функция сна не соответствует стандарту ANSI C; если вы говорите о функции sleep (с строчными буквами s), то это функция POSIX, которая по-прежнему имеет разрешение 1 секунда. Вместо этого, вероятно, вы говорите о функции Windows API Sleep (в верхнем регистре S), которая имеет разрешение 1 мс, но не предназначена для использования, когда требуется высокая точность.

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

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