Domanda

La prego quindi di dare un semplice scenario in cui è necessario filettatura? Grazie, Nich

È stato utile?

Soluzione

L'ho usato in una situazione in cui abbiamo bisogno di avviare alcuni dati di back-end di elaborazione per i dati tabulare prima l'utente che esegue alcuni rapporti. Così, dopo il login avremmo sparare un compito utilizzando cfthread per costruire i dati di magazzino per l'utente. Ha lavorato grande!

Quindi, pensare di cfthread come un modo per eseguire un compito asincrona su richiesta. Estremamente utile nella situazione giusta!

Altri suggerimenti

Usa cfthread se ha senso eseguire codice determinato in parallelo con il codice di richiesta di elaborazione principale.

Esempio: dire che si sta caricando una directory di file e avete bisogno di fare lo stesso trattamento a ciascuno, forse per salvare il contenuto nel database. È quindi possibile utilizzare cfthread per eseguire il trattamento su ogni file in modo asincrono. Considerate questo pseudocodice:

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

Ricordate che c'è un ambiente CF Admin per impostare il numero di thread si può deporre le uova in questo modo! Un sacco dipenderà anche sulle risorse di sistema.

Ci sono altri esempi in giro che descrivono altri casi d'uso in modo più dettagliato. Basta fare una ricerca su Google. Mi consiglia di Ben Nadal cfthread innesco come un buon punto di partenza.

Un altro avvertimento: le discussioni sono una soluzione a tutti i problemi! Stavo usando loro di affrontare con l'elaborazione di coda prima e funzionato in difficoltà .

In sintesi cfthread è una grande caratteristica di ColdFusion, godere!

ho usato cfthread in due situazioni.

Come notato sopra, ho usato quando ho voluto fare l'elaborazione asincrona mentre il mio thread principale stava facendo altre cose. Ad esempio, ho usato per caricare i dati feed mentre genera il resto della pagina. Dal momento che la chiamata alla fonte RSS ha preso un paio di secondi, ho iniziato un filo prima di iniziare qualsiasi altra elaborazione. Correva mentre stavo interrogando, disegnare il layout, ecc Poi mi sono iscritto il filo e visualizzato i dati RSS. Questo mi ha impedito di dover mettere in pausa il caricamento della pagina, mentre il RSS è stato popolando.

Il secondo modo in cui ho usato questo è una sorta di alternativa on-demand di utilizzare l'utilità di pianificazione. Eravamo la generazione di documenti PDF complessi. La generazione di persona che li non hanno bisogno di loro immediatamente, in modo piuttosto che avere l'utente bloccato mentre abbiamo generato il documento, abbiamo creato un filo unjoined per elaborare il PDF. Abbiamo poi limitato il numero di cfthreads fase di elaborazione in qualsiasi ppoint. Ora, indipendentemente dal carico, le cfthreads sarebbero semplicemente coda, e trattati come risorse erano disponibili.

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

Controlla sopra codifica. È un po 'chiaro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top