Sleep

Description

Causes the current thread to stop processing for a specified period of time.

Returns

Does not return a value.

Syntax

Sleep(duration) 

See also

cfthread, Using ColdFusion Threads in the Developing ColdFusion Applications

History

ColdFusion 8: Added function

Parameters

Parameter

Description

duration

Time, in milliseconds, to stop processing the thread.

Description

The Sleep function is useful when one thread must wait until another thread performs some action. The thread that must wait uses the Sleep function to stop processing for a time, and, when it awakens, checks to see if the other thread is ready. If it is not, the thread can sleep again. This type of action is useful, for example, when one thread must wait for another thread to complete initialization operations that apply to both threads.

The Sleep function behaves identically to the cfthread tag with an action attribute value of sleep.

Example

The following example has two threads. The second thread (threadB) uses the sleep function to ensure that the first thread (threadA) has completed before it starts processing.

<!--- ThreadA loops to simulate an initialization activity that might take time. ---> 
<cfthread name="threadA" action="run"> 
        <cfset thread.j=1> 
        <cfloop index="i" from="1" to="99999"> 
         <cfset thread.j=thread.j+1>  
    </cfloop> 
</cfthread> 
 
<!--- ThreadB loops while threadA is not finished, sleeping for  
        1/2 second each time. --->  
<cfthread name="threadB" action="run"> 
    <cfscript> 
        thread.sleepTimes=0; 
        thread.initialized=false; 
        while ((threadA.Status != "COMPLETED") && (threadA.Status  
                != "TERMINATED")) { 
            sleep(500); 
            thread.sleeptimes++; 
        } 
        // Only do the post-initilization code if the threadA completed. 
        If (threadA.Status == "COMPLETED") { 
            thread.initialized=true;  
            // Post-initialization code would go here. 
        } 
    </cfscript> 
</cfthread> 
 
<!Join the threads. ---> 
<cfthread action="join" name="threadA,threadB" timeout="10000"/> 
 
<!--- Display the thread information. ---> 
<!--- Different actions might be taken based on the thread status information. ---> 
<cfoutput> 
    threadA index value: #threadA.j#<br /> 
    threadA status: #threadA.Status#<br> 
    threadB status: #threadB.Status#<br> 
    threadB sleepTimes: #threadB.sleepTimes#<br> 
    threadB initialized: #threadB.initialized#<br> 
</cfoutput>