Function Sleep() Foundation
Explicitely sets idle condition for a thread.
Sleep( <nTime> ) --> NIL
The return value of Sleep() is always NIL.
The function Sleep() defines an explicit idle condition for the thread in which the function is called. During the idle condition the thread uses no system sources (CPU time) and leaves resources available to other threads. The idle condition lasts <nTime> hundredths of a second and cannot be interrupted.
Idle conditions can also be defined with the function InKey() or AppEvent(). But with these functions a program waits until either an event takes place or until the defined time interval has passed. Neither function guarantees that the idle time interval will be completed. In addition, events can be lost when an idle condition is defined with Inkey() or AppEvent(). With Sleep() the time interval for the idle condition is guaranteed. Events which occur during the idle condition are stored in the event queue and are available after the completion of Sleep().
// The example attempts to lock a data record.
// If a lock cannot be set, the program
// waits 1/2 second and attempts to lock the record again.
// After five attempts, termination occurs with a warning
// notice.
PROCEDURE Main
LOCAL nMaxRetry := 5, nTries := 0, lUpdated := .F.
USE Customer
DO WHILE (nTries < nMaxRetry) .AND. !lUpdated
IF ! RLock() // attempt to lock record
Sleep( 50 ) // wait 1/2 second
nTries ++ // if lock fails
ELSE
REPLACE Customer->Name WITH "Jones" // update data record
DbUnLock()
lUpdated := .T.
ENDIF
ENDDO
// data record is locked
IF ! lUpdated // more than 2.5 seconds
Alert( "Data record is currently locked", {"Ok"} )
ENDIF
USE
RETURN
If you see anything in the documentation that is not correct, does not match your experience with the particular feature or requires further clarification, please use this form to report a documentation issue.