Pregunta

¿podría por favor dar un escenario sencillo en el que es necesario roscar? Gracias, Nich

¿Fue útil?

Solución

Lo utilicé en una situación en la que necesitamos para iniciar algunos datos de back-end de procesamiento de datos tabulados antes de la ejecución de algunos informes de usuario. Así que después de inicio de sesión nos disparar una tarea utilizando cfthread para construir los datos de depósito para el usuario. Funcionó muy bien!

Así que pensar en cfthread como una manera de ejecutar una tarea asíncrona bajo demanda. Extremadamente útil en la situación correcta!

Otros consejos

Uso cfthread si tiene sentido para ejecutar cierto código en paralelo con el código principal de procesamiento de solicitudes.

Ejemplo: decir que está cargando un directorio de archivos y hay que hacer lo mismo procesamiento a cada uno, tal vez para guardar el contenido en la base de datos. A continuación, puede utilizar cfthread para ejecutar el procesamiento de cada archivo de forma asíncrona. Considere esto pseudocódigo:

<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>

Recuerde que hay una configuración CF Admin para establecer el número de hilos que puede generar de esta manera! Mucho también dependerá de los recursos del sistema.

Hay otros ejemplos alrededor del cual describen otros casos de uso en mayor detalle. Solo haga una búsqueda en Google. Me gustaría recomendar de Ben Nadal cfthread imprimación como un buen punto de partida.

Otra advertencia: las discusiones son una solución a todos los problemas! Yo estaba usando para hacer frente a procesamiento de la cola antes y metió en problemas .

En resumen cfthread es una gran característica de ColdFusion, que lo disfruten!

he utilizado cfthread en dos situaciones.

Como se señaló anteriormente, lo he usado cuando quería hacer el procesamiento asincrónico mientras mi hilo principal estaba haciendo otras cosas. Por ejemplo, he usado para cargar datos de RSS al generar el resto de la página. Desde la llamada a la fuente RSS tomó un par de segundos, empecé un hilo antes de comenzar cualquier otro tipo de elaboración. Se corrió mientras estaba consultar, dibujo del diseño, etc. Entonces me uní al hilo y visualizan los datos de RSS. Esto me impedía tener que hacer una pausa en la carga de la página, mientras que el RSS fue poblando.

La segunda forma en que he utilizado esta es una especie de alternativa a la carta de usar el planificador. Nos generar documentos PDF complejos. La generación persona que no los necesitaban de inmediato, por lo que en lugar de que el usuario atascado mientras generamos el documento, hemos creado un hilo sin unir para procesar el archivo PDF. A continuación, limita el número de cfthreads siendo procesada en cualquier Ppoint. Ahora bien, independientemente de la carga, los cfthreads serían simplemente cola y se procesan como se dispuso de recursos.

<!--- 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>

Compruebe por encima de la codificación. Es un poco claro.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top