你能给出一个需要线程化的简单场景吗?谢谢你,妮可
发布于 2011-01-12 11:58:39
我将其用于需要在用户执行某些报告之前启动一些后端数据处理以将数据制表的情况。因此,在登录之后,我们将使用cfthread启动一个任务,为用户构建仓库数据。效果很好!
因此,可以将cfthread看作是按需执行异步任务的一种方式。在正确的情况下非常有用!
发布于 2011-01-12 17:08:26
如果与主请求处理代码并行执行某些代码是有意义的,请使用cfthread。
例如:假设您正在上传一个文件目录,您需要对每个文件进行相同的处理,可能是为了将内容保存到数据库中。然后,您可以使用cfthread异步地对每个文件运行处理。考虑下面的伪代码:
<cfdirectory directory="x" action="read" name="allFiles" />
<cfloop query="allFiles">
<cfthread action="run" name="thread-#allFiles.name#>
<!--- Read your file in and do processing --->
</cfthread>
</cfloop>记住,有一个设置CF Admin来设置你可以用这种方式产生的线程的数量!这在很大程度上还取决于您的系统资源。
还有更详细地描述其他用例的其他示例。在谷歌上搜索一下就行了。我推荐Ben Nadal的cfthread primer作为一个很好的起点。
另一个警告:线程是所有问题的解决方案!我之前用它们来处理队列处理和ran into trouble。
总之,cfthread是ColdFusion的一个很好的特性,享受它吧!
发布于 2011-01-12 22:14:53
我在两种情况下使用过cfthread。
如上所述,当我想要进行异步处理,而我的主线程正在做其他事情时,我就用过它。例如,我使用它来加载RSS数据,同时生成页面的其余部分。由于对RSS源的调用花费了几秒钟时间,因此我在开始任何其他处理之前启动了一个线程。它运行时,我正在查询,绘制布局等。然后我加入线程,并显示RSS数据。这使我不必在填充RSS时暂停页面加载。
我使用的第二种方式是使用调度器的按需替代方法。我们正在生成复杂的PDF文档。生成它们的人并不立即需要它们,所以我们创建了一个未连接的线程来处理PDF,而不是在我们生成文档时让用户卡住。然后,我们限制了在任何ppoint上处理的cfthread的数量。现在,不管负载如何,cfthread将简单地排队,并作为可用的资源进行处理。
https://stackoverflow.com/questions/4664828
复制相似问题