How can I implement a delay, or time a users response, with sub-second resolution?

Untitled Forums Assignment Help How can I implement a delay, or time a users response, with sub-second resolution?

Viewing 2 posts - 1 through 2 (of 2 total)
  • Author
    Posts
  • #1203
    Aakanksha
    Participant

    How can I implement a delay, or time a users response, with sub-second resolution?

    #9768
    Aakanksha
    Participant

    Unfortunately, there is no portable way. Routines you might look for on your system include clock, delay, ftime, gettimeofday, msleep, nap, napms, nanosleep, setitimer, sleep, Sleep, times, and usleep. (A function called wait, however, is at least under Unix not what you want.) The select and poll calls (if available) can be pressed into service to implement simple delays. On MS-DOS machines, it is possible to reprogram the system timer and timer interrupts.

    Of these, only clock is part of the ANSI Standard. The difference between two calls to clock gives elapsed execution time, and may even have subsecond resolution, if CLOCKS_PER_SEC is greater than 1. However, clock gives elapsed processor time used by the current program, which on a multitasking system (or in a non-CPU-intensive program) may differ considerably from real time.

    If you’re trying to implement a delay and all you have available is a time-reporting function, you can implement a CPU-intensive busy-wait, but this is only an option on a single-user, single-tasking machine, as it is terribly antisocial to any other processes. Under a multitasking operating system, be sure to use a call which puts your process to sleep for the duration, such as sleep or select, or pause in conjunction with alarm or setitimer.

    For really brief delays, it’s tempting to use a do-nothing loop like

    long int i;

    for(i = 0; i < 1000000; i++)

    ;

Viewing 2 posts - 1 through 2 (of 2 total)
  • You must be logged in to reply to this topic.