Stephen! ;o)
Please read what I write.
> The CFC is *not* changing specific application scope data - i.e. there is *not* a
>
>
> application.myCFC = createObject(...);
> application.myStruct = new Struct();
>
> and the myCFC is tinkering with the myStruct scope.
Let me please repeat - this is NOT happening.
NOT NOT NOT.
It's local data to the CFC instance it's manipulating
(i.e. variables scope)
Mark
------------------------------------------------------------------
[EMAIL PROTECTED]
ICQ: 3094740
Safe From Bees
[ www.safefrombees.com ]
Quoting Stephen Bosworth <[EMAIL PROTECTED]>:
> What should be happening here is that application.myStruct should not be
> tinkered directly within your CFC. You should be passing it as an argument
> to your CFC method
>
> > application.myCFC = createObject(...);
> > application.myStruct = new Struct();
>
> <cfset myComp = CreateObject("component","path.to.mycomp") />
>
> <cflock name="test" timeout="10" type="exclusive" throwontimeout="yes">
>
> <cfset application.myStruct =
> myComp.tinkerWithAppStruct(application.myStruct) />
>
> </cflock>
>
> --
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> Stephen Bosworth
> Application Development and Integration
> Communication and Information Services
> The University of Newcastle, Australia
> Phone: 02 4921 6574
> Fax: 02 4921 7087
> Mobile: 0438 492518
> Email: [EMAIL PROTECTED]
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> >>> [EMAIL PROTECTED] 1/06/2004 12:13:20 pm >>>
> Just to clarify -
>
> The CFC is not changing specific application scope data - i.e. there is not a
>
>
> application.myCFC = createObject(...);
> application.myStruct = new Struct();
>
> and the myCFC is tinkering with the myStruct scope.
>
> The myCFC has private members within itself that it manipulated (which is
> fair enough).
>
> I'm saying that if there is the possibility of thread safety, it should be
> locked.
>
> HOWEVER, I'm advocating the use of a NAME lock, rather than a SCOPE lock -
> i.e.
>
> <cflock name="thisisMyLockName" ....>
>
> NOT
>
> <cflock scope="APPLICATION" ...>
>
> (Just to reiterate that point)
>
> The latter directly ties the CFC to the application scope, however the former
> means the CFC is thread safe
> no matter WHERE you use it.
>
> > A component should not know how it is actaully implemented outside of
> itself,
> > it should be scope independent.
>
> By your own words - if there are going to be an issue with thread safety,
> however the CFC should have
> DEFINATLEY locking in it.
>
> That make more sense?
>
> Mark
> ------------------------------------------------------------------
> [EMAIL PROTECTED]
> ICQ: 3094740
> Safe From Bees
> [ www.safefrombees.com ]
>
>
> Quoting Stephen Bosworth <[EMAIL PROTECTED]>:
>
> > Mark,
> >
> > > I think locking SHOULD be encapsulated in the object. The CFC should be
> a
> > black box as such.. a
> > developer shouldn't have to KNOW to lock it.
> >
> > A component should not know how it is actaully implemented outside of
> itself,
> > it should be scope independent.
> >
> > Everywhere you call a method on your object (component) that has the
> > potential to manipulate its private data in application scope, the method
> > calls should be locked with a named lock.
> >
> > The best way would be to not include your locking inside of your
> component.
> >
> > Even if you are using wrapper components to instansiate a number of
> objects
> > in application scope, the lock should be placed around the instansiation
> > call, not inside the component.
> >
> > I'm not saying what you are suggesting won't work, its just not the best
> > approach IMHO.
> >
> > cheers
> >
> > --
> > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > Stephen Bosworth
> > Application Development and Integration
> > Communication and Information Services
> > The University of Newcastle, Australia
> > Phone: 02 4921 6574
> > Fax: 02 4921 7087
> > Mobile: 0438 492518
> > Email: [EMAIL PROTECTED]
> > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >
> > >>> [EMAIL PROTECTED] 1/06/2004 11:32:40 am >>>
> > Before i wrote the post - I actually decided to use NAME locking to make
> sure
> > that my data wasn't going to
> > go all wonky on me due to multithreaded conditions.
> >
> > I think locking SHOULD be encapsulated in the object. The CFC should be a
> > black box as such.. a
> > developer shouldn't have to KNOW to lock it.
> > (Unless stated in documentation)
> >
> > I mean - what happens if a CFC calls it's own functions? (which this one
> does
> > - it handles all my CFC
> > persistance) - having external locking doesn't work there does it?
> >
> > It's an interesting question however, isn't it ;o)
> >
> > Mark
> > ------------------------------------------------------------------
> > [EMAIL PROTECTED]
> > ICQ: 3094740
> > Safe From Bees
> > [ www.safefrombees.com ]
> >
> >
> > Quoting Theo Galanakis <[EMAIL PROTECTED]>:
> >
> > > I understand your dilemma.. It such a scenario I would not explicitly
> have
> > > application locking within the object, however I would have the lock
> > > encapsulated around the code instantiating or calling functions within
> the
> > > application resident cfc.
> > >
> > >
> > > -----Original Message-----
> > > From: [EMAIL PROTECTED]
> > > [mailto:[EMAIL PROTECTED] On Behalf Of Mark M
> > > Sent: Tuesday, 1 June 2004 11:09 AM
> > > To: CFAussie Mailing List
> > > Subject: [cfaussie] Odd Scope / Locking Question
> > >
> > > I just had a weird thought.
> > >
> > > If I have a CFC that I persist in the application scope.
> > >
> > > Inside that CFC I have a struct.
> > >
> > > When I go to edit that struct, does that require a APPLICATION scope
> lock?
> > > (assuming there could be cause for multi-thread issues)
> > >
> > > Mark
> > > ------------------------------------------------------------------
> > > [EMAIL PROTECTED]
> > > ICQ: 3094740
> > > Safe From Bees
> > > [ www.safefrombees.com ]
> > >
> >
> > ---
> > You are currently subscribed to cfaussie as:
> > [EMAIL PROTECTED]
> > To unsubscribe send a blank email to
> [EMAIL PROTECTED]
> >
> >
> > MXDU2004 + Macromedia DevCon AsiaPac + Sydney, Australia
> > http://www.mxdu.com/ + 24-25 February, 2004
> >
> >
> > ---
> > You are currently subscribed to cfaussie as: [EMAIL PROTECTED]
> > To unsubscribe send a blank email to
> [EMAIL PROTECTED]
> >
> > MXDU2004 + Macromedia DevCon AsiaPac + Sydney, Australia
> > http://www.mxdu.com/ + 24-25 February, 2004
> >
> >
> >
>
> ---
> You are currently subscribed to cfaussie as:
> [EMAIL PROTECTED]
> To unsubscribe send a blank email to [EMAIL PROTECTED]
>
>
> MXDU2004 + Macromedia DevCon AsiaPac + Sydney, Australia
> http://www.mxdu.com/ + 24-25 February, 2004
>
> ---
> You are currently subscribed to cfaussie as: [EMAIL PROTECTED]
> To unsubscribe send a blank email to [EMAIL PROTECTED]
>
> MXDU2004 + Macromedia DevCon AsiaPac + Sydney, Australia
> http://www.mxdu.com/ + 24-25 February, 2004
>
>
>
---
You are currently subscribed to cfaussie as: [EMAIL PROTECTED]
To unsubscribe send a blank email to [EMAIL PROTECTED]
MXDU2004 + Macromedia DevCon AsiaPac + Sydney, Australia
http://www.mxdu.com/ + 24-25 February, 2004