答えは、関数呼び出しを cfthread タグ内でロックすることです。以下に例を示します。
<cfthread action="run" name="thread1">
<cflock name="threadlock" type="exclusive" timeout="10000">
<cfset callToSomeFunction()>
</cflock>
</cfthread>
したがって、これをテストするには、以下のコードを .cfm テンプレートにコピーします。Firefox を開き、Chrome を開きます。次に、Firefox 内でテンプレートをテストします。5 秒待ってから、Chrome 内でテンプレートをテストします。
<cfthread action="run" name="thread1">
<cfset tickstart = GetTickCount()>
<cfset time = StructNew()>
<cfset time.timestart = DateFormat(now(),'dd-mm-yy') & " " & TimeFormat(now(),'hh-mm-ss')>
<cflock name="threadlock" type="exclusive" timeout="10000">
<cfthread action="sleep" duration="#(10 * 1000)#" />
</cflock>
<cfset tickend = GetTickCount()>
<cfset tick = tickend - tickstart>
<cfset time.tick = tick/1000>
<cfset time.timeend = DateFormat(now(),'dd-mm-yy') & " " & TimeFormat(now(),'hh-mm-ss')>
<cfdump var="#time#" format="html" metainfo="no" output="somefilepath\#thread1.name#-#DateFormat(now(),'dd-mm-yy')#-#TimeFormat(now(),'hh-mm-ss')#.htm" />
</cfthread>