PR_IntervalNow

Returns the value of NSPR's free-running interval timer.

Syntax

 #include <prinrval.h>

 PRIntervalTime PR_IntervalNow(void);

Returns

A PRIntervalTime object.

Description

You can use the value returned by PR_IntervalNow() to establish epochs and to determine intervals (that is, compute the difference between two times). PR_IntervalNow() is both very efficient and nonblocking, so it is appropriate to use (for example) while holding a mutex.

The most common use for PR_IntervalNow() is to establish an epoch and test for the expiration of intervals. In this case, you typically call PR_IntervalNow() in a sequence that looks like this:

 PRUint32 interval = ... ; // milliseconds
 // ...
 PRStatus rv;
 PRIntervalTime epoch = PR_IntervalNow();
 PR_Lock(data->mutex);
 while (!EvaluateData(data))  /* wait until condition is met */
 {
     PRUint32 delta = PR_IntervalToMilliseconds(PR_IntervalNow() - epoch);
     if (delta > interval) break;  /* timeout */
     rv = PR_Wait(data->condition, PR_MillisecondsToInterval(interval - delta));
     if (PR_FAILURE == rv) break;  /* likely an interrupt */
 }
 PR_Unlock(data->mutex);