Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Coldfusion 什么时候应该使用cfthread?_Coldfusion_Coldfusion 8_Coldfusion 9 - Fatal编程技术网

Coldfusion 什么时候应该使用cfthread?

Coldfusion 什么时候应该使用cfthread?,coldfusion,coldfusion-8,coldfusion-9,Coldfusion,Coldfusion 8,Coldfusion 9,请给出一个需要线程的简单场景好吗? 非常感谢。 Nich我在一种情况下使用了它,在用户执行某些报告之前,我们需要启动一些后端数据处理以将数据制成表格。因此,登录后,我们将使用cfthread启动一个任务,为用户构建仓库数据。工作得很好 因此,可以将cfthread视为按需执行异步任务的一种方式。在正确的情况下非常有用 如果与主请求处理代码并行执行某些代码有意义,请使用cfthread 示例:假设您正在上载一个文件目录,您需要对每个文件执行相同的处理,可能是为了将内容保存到数据库中。然后可以使用c

请给出一个需要线程的简单场景好吗? 非常感谢。
Nich

我在一种情况下使用了它,在用户执行某些报告之前,我们需要启动一些后端数据处理以将数据制成表格。因此,登录后,我们将使用cfthread启动一个任务,为用户构建仓库数据。工作得很好


因此,可以将cfthread视为按需执行异步任务的一种方式。在正确的情况下非常有用

如果与主请求处理代码并行执行某些代码有意义,请使用
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>


#变量.消息#

检查上面的编码。有点清楚。

我在两种情况下使用了cfthread

如上所述,当我想做异步处理,而我的主线程正在做其他事情时,我使用了它。例如,我使用它来加载RSS数据,同时生成页面的其余部分。由于对RSS源的调用需要几秒钟,因此我在开始任何其他处理之前启动了一个线程。它在我查询、绘制布局等时运行。然后我加入线程并显示RSS数据。这使我不必在RSS填充时暂停页面加载


我使用的第二种方法是按需替代使用调度程序。我们正在生成复杂的PDF文档。生成它们的人不需要立即使用它们,因此我们创建了一个未连接的线程来处理PDF,而不是在生成文档时让用户卡住。然后,我们限制在任何点上处理的cfthreads的数量。现在,不管负载如何,cfthreads都将简单地排队,并在资源可用时进行处理。

这并不能回答问题。用户想知道什么时候需要线程(即:用例),而不是如何使用它
<!--- store value into message varaible --->
<cfset variables.message = "It's orginal value.">

<!--- create new thread --->
<cfthread name="ThreadOne">
<!--- overwrite new value into existing variable. --->
<cfset variables.message = "It comes from thread.">
</cfthread>

<!--- join thread --->
<!---
If we leave this join, the code within thread will execute but won't display the value.
--->
<cfthread action="join" name="ThreadOne" />

<!--- Output --->
<cfoutput>#variables.message#</cfoutput>