Hi, thanks for the response.
 
For the testing my little case, it is of course depending on the performance on 
the server with my little wait loop there (on BD I used CFPAUSE).
 
Your workaround would work, but it would break encapsulation - the object 
shouldn't require other pieces of code to use the results any special way... So 
I wouldn't recommend it.
 
/Hugo

        -----Original Message----- 
        From: [EMAIL PROTECTED] on behalf of Daniel Roberts 
        Sent: Fri 2006-03-17 18:04 
        To: [email protected] 
        Cc: 
        Subject: Re: [CFCDev] application-scoped singletons and thread safety
        
        
        If it is a problem then you could use from/to loops and array notation 
(query.field[index]) so you have your own local record index (if that is in 
fact the problem)
        
        
        
        On 3/17/06, Daniel Roberts <[EMAIL PROTECTED]> wrote: 

                here's the code of the page I ran while running your test in 
multiple tabs. Run by itself it just outputs 1 but with the other code running 
it will randomly flucuated from 1 to 4
                
                <cfset thisQuery = APPLICATION.fooObject.getQuery () />
                <ul>
                <cfoutput>
                <cfloop from="1" to="100" index="i">
                    <li>#thisQuery.currentrow#</li>
                    <cfloop index="counter" from="1" to="100000"> 
                        <cfset temp = counter * rand() />
                    </cfloop>
                </cfloop>
                </cfoutput>
                </ul>
                
                
                
                
                On 3/17/06, Daniel Roberts <[EMAIL PROTECTED]> wrote: 

                        I tested the file you gave me with around 20 tabs and 
saw no problem between each output. I then created another test page to loop 
over currentrow 100 times while other tabs were running your code and I can see 
that currentrow fluxuates between 1 and 4. 
                        
                        This is an issue I've never considered.
                        
                        
                        
                        On 3/17/06, Hugo Ahlenius < [EMAIL PROTECTED] 
<mailto:[EMAIL PROTECTED]> > wrote: 
                        

                                | What kind of weird things are you seeing?
                                
                                It seems like the cursor for a cfoutput gets 
confused over simultaneous 
                                requests, so that a simple cfloop or cfoutput 
over the query does not
                                work properly.
                                
                                I have an extremely simple/stripped down 
testcase here:
                                http://ftp.grida.no/hugo/testcase.zip 
                                (run this and open some 5-8 windows/tabs in a 
browser simultaneously and
                                compare the results)
                                
                                Or you can test the same thing live here:
                                
http://dev.maps.grida.no/testcase14/testcase.cfm 
                                (look at the lower left bar with the list of 
latest graphics, do the
                                same routine with it)
                                
                                Perhaps this test case can be simplified even 
more, to just storing the
                                query in the application scope (and skip the 
object). 
                                
                                It is not so complicated actually, and the 
conclusion pretty obvious --
                                best practice should be to duplicate() and not 
use a reference (for
                                query variables), since the loop cursor still 
sticks with the single 
                                application-wide reference to the variable.
                                
                                To reduce coupling, any variables stored in a 
singleton local scope
                                probably should be duplicated anyway - things 
calling an object
                                shouldn't care or know about how things are 
cached/stored and they don't 
                                know if things are read-only or not. (and they 
shouldn't care if it is a
                                reference or a duplicated var, at least for 
non-object variables)
                                
                                
                                --
                                Hugo Ahlenius
                                
                                
------------------------------------------------------------- 
                                Hugo Ahlenius                  E-Mail: [EMAIL 
PROTECTED]
                                Project Officer                Phone:          
+46 8 412 1427 
                                UNEP GRID-Arendal              Fax:            
+46 8 723 0348 
                                Stockholm Office               Mobile:         
+46 733 467111
                                                               WWW:       
http://www.grida.no 
                                                               Skype:        
callto:fraxxinus 
                                
-------------------------------------------------------------
                                
                                ###########################################
                                
                                This message has been scanned by F-Secure 
Anti-Virus for Microsoft Exchange.
                                For more information, connect to 
http://www.f-secure.com/
                                
                                
                                
----------------------------------------------------------
                                You are subscribed to cfcdev. To unsubscribe, 
send an email to [email protected] with the words 'unsubscribe cfcdev' as the 
subject of the email.
                                
                                CFCDev is run by CFCZone ( www.cfczone.org 
<http://www.cfczone.org> ) and supported by CFXHosting ( www.cfxhosting.com 
<http://www.cfxhosting.com> ).
                                
                                An archive of the CFCDev list is available at 
www.mail-archive.com/[email protected] 
                                
                                
                                




        ----------------------------------------------------------
        You are subscribed to cfcdev. To unsubscribe, send an email to 
[email protected] with the words 'unsubscribe cfcdev' as the subject of the 
email.
        
        CFCDev is run by CFCZone (www.cfczone.org) and supported by CFXHosting 
(www.cfxhosting.com).
        
        An archive of the CFCDev list is available at 
www.mail-archive.com/[email protected] 

<<winmail.dat>>

Reply via email to