Causes the current thread to stop processing for a specified period of time.
Does not return a value.
Sleep(duration)
cfthread, "Using ColdFusion Threads" 95 in the ColdFusion Developer's Guide
ColdFusion 8: Added function
Parameter |
Description |
---|---|
duration |
Time, in milliseconds, to stop processing the thread. |
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.
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>