質問

スレッドが必要な簡単なシナリオを教えてください。ありがとう、ニッチ

役に立ちましたか?

解決

ユーザーがいくつかのレポートを実行する前に、バックエンドデータ処理を開始するためにデータ処理を開始する必要がある状況で使用しました。したがって、ログイン後、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>

この方法でスポーンできるスレッドの数を設定するための設定CF管理者があることを忘れないでください!多くのことはシステムリソースにも依存します。

他のユースケースをより詳細に説明する他の例があります。 Google検索を行うだけです。ベンナダルをお勧めします cfthreadプライマー 良い出発点として。

もう1つの警告:スレッドはすべての問題の解決策です!私はそれらを使用して以前にキューの処理に対処していました トラブルにぶつかりました.

要約すれば cfthread ColdFusionの素晴らしい機能です、楽しんでください!

2つの状況でCFThreadを使用しました。

上記のように、メインスレッドが他のことをしている間に非同期処理をしたかったときに使用しました。たとえば、ページの残りの部分を生成しながらRSSデータをロードするためにそれを使用しました。 RSSソースへの呼び出しには数秒かかったので、他の処理を開始する前にスレッドを開始しました。クエリ、レイアウトなどを描いている間に実行されました。その後、スレッドに参加してRSSデータを表示しました。これにより、RSSが住んでいる間にページのロードを一時停止する必要がなくなりました。

これを使用した2番目の方法は、スケジューラを使用するためのオンデマンドの代替手段です。複雑なPDFドキュメントを生成していました。それらを生成した人はすぐにそれらを必要としなかったので、ドキュメントを生成している間にユーザーが詰まっているのではなく、PDFを処理するために接続されていないスレッドを作成しました。次に、任意のPpointで処理される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>

上記のコーディングを確認してください。それはちょっと明確です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top