【发布时间】:2016-08-15 18:45:37
【问题描述】:
多年来,我一直在多个 ColdFusion 环境中使用以下代码:
<cfthread
action = "run"
name = "#Local.cachedFilename#"
src = "#Arguments.src#"
>
<!--- Process image --->
<cfset Local.objImage = This.processImage(
src = Arguments.src
) />
</cfthread>
我今天来在不同的环境中重用我的组件,这是我第一次遇到错误,Arguments.src 在线程中不存在。
谷歌搜索返回了一个答案,我应该在线程内使用 attributes 范围...所以 ProcessImage 调用使用 Attributes.src 而不是 Arguments.src。
这很好用。一切都很好。但我很困惑。
我为 Railo 编写了这段代码。它工作得很好。我把它移植到CF10上,效果很好。我在CF11上运行它。它工作得很好。
我第一次遇到错误是在一个特定的盒子上,它也在运行 CF10。
所以我的问题是 - 某处是否有更新,或者是否有一些特定的情况允许我在 CFThread 中使用 arguments 范围?本质上,如果我应该使用 attributes 范围,那么多年来我怎么能正常工作?!
【问题讨论】:
-
可能发生的情况是,在线程产生后,调用它的函数完成,函数中定义的变量被释放,所以当线程开始执行时,
ARGUMENTS.src不再存在。这就是为什么需要使用ATTRIBUTES范围的原因:保持线程自包含且没有线程问题
标签: multithreading coldfusion cfthread