# PR_Sleep Causes the current thread to yield for a specified amount of time. ## Syntax ```{code} #include PRStatus PR_Sleep(PRIntervalTime ticks); ``` ### Parameter {ref}`PR_Sleep` has the following parameter: `ticks` : The number of ticks you want the thread to sleep for (see {ref}`PRIntervalTime`). ### Returns Calling {ref}`PR_Sleep` with a parameter equivalent to `PR_INTERVAL_NO_TIMEOUT` is an error and results in a `PR_FAILURE` error. ## Description {ref}`PR_Sleep` simply waits on a condition for the amount of time specified. If you set ticks to `PR_INTERVAL_NO_WAIT`, the thread yields. If ticks is not `PR_INTERVAL_NO_WAIT`, {ref}`PR_Sleep` uses an existing lock, but has to create a new condition for this purpose. If you have already created such structures, it is more efficient to use them directly. Calling {ref}`PR_Sleep` with the value of ticks set to `PR_INTERVAL_NO_WAIT` simply surrenders the processor to ready threads of the same priority. All other values of ticks cause {ref}`PR_Sleep` to block the calling thread for the specified interval. Threads blocked in {ref}`PR_Sleep` are interruptible.