usleep()
QNX SDP8.0C Library ReferenceAPIDeveloper
Suspend a thread for a given number of microseconds
Synopsis:
#include <unistd.h>
int usleep( useconds_t useconds );
Arguments:
- useconds
- The number of microseconds that you want to suspend the thread for.
Library:
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
Description:
The usleep() function suspends the calling thread until
useconds microseconds of real time have elapsed, or until
a signal that isn't ignored is received. The time spent suspended could be
longer than the requested amount due to the nature of time measurement (see the
Understanding the Microkernel's Concept of Time
chapter of the QNX OS Programmer's Guide),
or due to the scheduling of other, higher-priority threads.
If useconds is 0, usleep() has no effect.
Note:
While usleep() looks like you can specify a sleep duration down to the
microsecond level, the actual delay will still be driven by the system clock tick.
Assuming the usual default clock tick is 1 ms, the shortest delay you can get from
usleep() will be 1.5 ms on average.
Returns:
- 0
- Success.
- -1
- An error occurred (errno is set).
Errors:
- EAGAIN
- No timer resources are available to satisfy the request.
- EINTR
- The call was interrupted by a signal.
Examples:
/*
* The following program sleeps for the
* number of microseconds specified in argv[1].
*/
#include <stdlib.h>
#include <unistd.h>
int main( int argc, char **argv )
{
useconds_t microseconds;
microseconds = (useconds_t)strtol( argv[1], NULL, 0 );
if( usleep( microseconds ) == 0 ) {
return EXIT_SUCCESS;
}
return EXIT_FAILURE;
}
Classification:
Standard Unix; removed from POSIX.1-2008
Safety: | |
---|---|
Cancellation point | Yes |
Signal handler | Yes |
Thread | Yes |
Page updated: