All pastes #542760 Raw Edit

CF8 Thread Testing

public xml v1 · immutable
·published 2007-06-05 22:28 UTC
rendered paste body
<cfscript>		variables.sites = {		yahoo			= "http://www.yahoo.com/",		msn		 		= "http://www.msn.com/",		google 		= "http://www.google.com/",		live			= "http://www.live.com/",		wikipedia	= "http://en.wikipedia.org/wiki/Main_Page",		microsoft	= "http://www.microsoft.com/en/us/default.aspx",		facebook	= "http://www.facebook.com/"	};	</cfscript><cftimer label="No threading" type="outline">	<cfloop collection="#variables.sites#" item="site">		<cfhttp url="#variables.sites[site]#" />		<cfoutput>			<pre>[#len(cfhttp.fileContent)#]	#site#</pre>		</cfoutput>		<cfflush />	</cfloop></cftimer><cftimer label="Threading: Join All" type="outline">	<cfset threadList = "" />	<cfloop collection="#variables.sites#" item="site">		<cfset threadList = listAppend(threadList, site & "_joinAll") />		<cfthread name="#site#_joinAll" action="run" url="#variables.sites[site]#">			<cfhttp url="#url#" />			<cfoutput>#len(cfhttp.fileContent)#</cfoutput>		</cfthread>	</cfloop>	<cfthread action="join" name="#threadList#" />	<cfloop collection="#variables.sites#" item="site">		<cfoutput>			<pre>[#trim(evaluate(site & "_joinAll.output"))#]	#site#</pre>		</cfoutput>		<cfflush />	</cfloop></cftimer><cftimer label="Threading: Async Join" type="outline">	<cfset variables.runningThreads = "" />	<cfset variables.finishedThreads = "" />	<cfloop collection="#variables.sites#" item="site">		<cfset variables.runningThreads = listAppend(variables.runningThreads, site) />		<cfthread name="#site#" action="run" url="#variables.sites[site]#">			<cfhttp url="#url#" />			<cfoutput>#len(cfhttp.fileContent)#</cfoutput>			<cfset variables.finishedThreads = listAppend(variables.finishedThreads, thread.name) />			<cfset variables.runningThreads = listDeleteAt(variables.runningThreads, listFind(variables.runningThreads, thread.name)) />		</cfthread>	</cfloop>	<cfloop condition="listLen(variables.runningThreads) GT 0 OR listLen(variables.finishedThreads) GT 0">		<cfloop list="#variables.finishedThreads#" index="i">			<cfthread action="join" name="#listFirst(variables.finishedThreads)#" />			<cfoutput>				<pre>[#trim(evaluate(listFirst(variables.finishedThreads) & ".output"))#]	#listFirst(variables.finishedThreads)#</pre>			</cfoutput>			<cfflush />			<cfset variables.finishedThreads = listDeleteAt(variables.finishedThreads, 1) />		</cfloop>	</cfloop></cftimer>