|
Sleep
DescriptionCauses
the current thread to stop processing for a specified period of
time.
ReturnsDoes
not return a value.
HistoryColdFusion
8: Added function
Parameters
Parameter
|
Description
|
duration
|
Time, in milliseconds, to stop processing
the thread.
|
DescriptionThe 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.
ExampleThe
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>
|