Did you know that ColdFusion 8 has a new scope? The CFTHREAD scope is a special scope that contains information about threads in the current request. Consider this simple example:

<cfset urls = "http://www.cnn.com,http://www.raymondcamden.com,http://www.yahoo.com">

<cfset counter = 0> <cfloop index="u" list="#urls#"> <cfset counter++ > <cfthread theurl="#u#" name="thread_#counter#"> <cfhttp url="#attributes.theurl#"> </cfthread> </cfloop>

<cfdump var="#cfthread#">

This code block creates 3 threads, named thread_1, thread_2, and thread_3. (I don't get paid to be creative!) Each thread created will exist as a structure inside the CFTHREAD scope as demonstrated in this screen shot:

You will notice that not all of my threads are finished. That is because I didn't do a join on my threads. If you look at Paragator, my ColdFusion RSS Aggregator CFC, you will see I kept a list of all threads so that I could join them. I then used Evalute to create pointers to the data. This can be done a lot easier now. So for example, to join all threads:

<cfthread action="join" name="#structKeyList(cfthread)#" />

And to get access to a thread's data:

<cfdump var="#cfthread[somethreadname]#">

I'll be updating Paragator a bit later in the week.