From: James S. <jam...@op...> - 2007-04-18 03:07:36
|
On Wed, 2007-04-18 at 12:02 +1000, Howard Bryden wrote: <snip> I appear to have a slightly newer _mingw.h at 3.9 and w32api.h at 3.6, but apart from that... > Behaviour: For intervals less than 500000 (i.e. 0.0005s) > nanosleep() terminates, but at 500000 and greater it definitely hangs. > > Test Case: The following code demonstrates the problem: > > #include <stdio.h> > #include <time.h> > #include <sys/time.h> > > int main(int argc, char *argv[]) { > struct timespec ts1, ts2; > int code; > > ts1.tv_sec = 0; > ts1.tv_nsec = atol(argv[1]); > ts2.tv_sec = 0; > ts2.tv_nsec = 0; > > printf( "Sleep for %d ns ... \n", ts1.tv_nsec ); > code = nanosleep(&ts1, &ts2); > printf( "Terminated\n" ); > } I can't even compile this. I get the feeling that struct timespec is not definied in any headers on my system. Where is it defined in yours? I do see a struct timeval, but that is only for usecs, not nsecs. If I change to timeval and nsec to usec, I get a linker error trying to find nanosleep. Also, Sleep(msec) seems to be the only sleep function around. Is there any Microsnot sleep function with greater precision than milliseconds? Regards, James. |