我有一個應用程序每晚發送幾封100k的電子郵件,所以爲了加快處理速度,增加了一些cfthreads。CFTHREAD中的範圍問題
這造成了一些奇怪的錯誤,我發現在一個線程中創建的變量正在被另一個線程修改。從我讀過的文檔中,在一個線程中創建的變量應該僅對該線程可見?
做了一個簡單的測試,像這樣:
<cfthread
name="thread1"
action="run">
<cfsavecontent variable="local.template_body">
<cfinclude template="templates\6\2\bulletin_template.cfm">
</cfsavecontent>
<cfset tmpEmailBody = template_body>
</cfthread>
<cfthread
name="thread2"
action="run">
<cffile action="append"
file="C:\inetpub\error1.txt"
output="#tmpEmailBody#">
</cfthread>
「tmpEmailBody」的內容得到成功寫入文件。
奇怪的是,如果我刪除cfsavecontent部分,並且有: <cfset tmpEmailBody = "test">
,那麼第二個線程提升和錯誤tmpEmailBody心不是定義,如我期望的那樣。
任何人都知道這裏發生了什麼?
該代碼只是爲了演示似乎違背Coldfusion文檔的行爲。我的實際應用與您所說的相似,我實際上希望我的兩個線程中的變量彼此完全隔離 – Omiron