I just want to add the user is also shared scope, in that a client
(browser or other agent) can initiate multiple requests with the same
user reference, and that these can run simultaneously.
>The thread safe property for a TCF in the dev studio is actually no
>longer relevant in the Witango 5 Server as each request runs in its own
>thread rather than being passed into different resource threads. This
>was only an issue in the cooperatively threaded T2K server and how it
>worked. The architecture of the new server does not use this property
>and there is no penalty in performance when using TCFs, except for the
>instantiation of the object.
>
>TCFs aside you do have to be careful with the preemptive threading in
>the Witango 5 Server with shared scopes variable (custom scope,
>application scope) as you can have one request change a variable that
>another thread may be using. Take for instance a while action using a
>custom scoped variable in one thread like this (pseudo code):
>
>myScope$MyVar=0
>WHILE (myScope$MyVar != 100) {
> Other Actions
> Increment myScope$MyVar
> }
>
>If another thread is started and runs the same code there is a chance
>that both could increment myScope$MyVar simultaneously. Let say that
>the value of myScope$MyVar is 99 when this occurs, there is a chance
>that this loop will never exit as myScope$MyVar is equal to 101 before
>the end of the loop iteration. This would create an infinite loop.
>Request scope is the safest scope followed by user scope which would
>only have this type of issue in a framed site.
>
>I will let the doc writers know to update the manual and engineering so
>they can decide what to do with the dev studio.
>
>Witango Support
>
>On 05/03/2004, at 3:59 PM, <[EMAIL PROTECTED]> wrote:
>
>>
>>
>> I have noticed that for any TCF object, no matter how simple (even an
>> empty
>> one), the property reads "Thread Safe: No".
>>
>> According to the documentation:
>> "If the field indicates No (not thread safe), Witango Server waits for
>> one
>> execution of the instance to complete before it starts another, to
>> avoid any
>> interference between the two. From the user's perspective, the
>> difference is
>> in performance only. "
>> If this is true, what difference does it make if we have an algorithm
>> to
>> handle critical sections?
>>
>> For all practical reasons, once one creates such an object there is a
>> performance penalty.
>> Perhaps the documentation should more clearly state this problem with
>> TCFs.
>>
>> The "thread safe" subject is so briefly mentioned in the manual is
>> difficult
>> to understand why is it mentioned at all...
>>
>> Where do I go wrong?
>>
>> - Mike.
>>
>>
>>
>>
>> -----Original Message-----
>> From: Fogelson, Steve [mailto:[EMAIL PROTECTED]
>> Sent: Monday, March 01, 2004 12:05
>> To: '[EMAIL PROTECTED]'
>> Subject: RE: Witango-Talk: Thread Safe Class file
>>
>> Actually, I read about "thread safe" when reviewing Witango
>> documentation
>> for class files. Seemed like it would be advantageous with multi
>> threading
>> version 5. Maybe it is no big deal not to be thread safe. I just
>> thought it
>> would allow Witango to handle more concurrent requests.
>>
>> I checked a couple of my class files (per documentation) to see if
>> they were
>> thread safe and it indicates they are not. So I was wondering:
>>
>> 1) Do we have the ability to change this flag or does the app studio
>> determine if it is?
>> 2) What is required of a class file in order to be thread safe
>>
>> Thanks for the comments
>>
>> Steve
>>
>> -----Original Message-----
>> From: Robert Shubert [mailto:[EMAIL PROTECTED]
>> Sent: Monday, March 01, 2004 1:28 PM
>> To: [EMAIL PROTECTED]
>> Subject: RE: Witango-Talk: Thread Safe Class file
>>
>>
>> Oops, my bad ... I was replying to Bill's post, who replied to you,
>> replying
>> to Bill who replied to Steve ... I think. :)
>>
>> -----Original Message-----
>> From: Alan Wolfe [mailto:[EMAIL PROTECTED]
>> Sent: Monday, March 01, 2004 1:36 PM
>> To: [EMAIL PROTECTED]
>> Subject: Re: Witango-Talk: Thread Safe Class file
>>
>> Steve was asking actualy so i dont know what his intentions are, i was
>> just
>> tossing in my 2 cents (:
>>
>> ----- Original Message -----
>> From: "Robert Shubert" <[EMAIL PROTECTED]>
>> To: <[EMAIL PROTECTED]>
>> Sent: Monday, March 01, 2004 10:25 AM
>> Subject: RE: Witango-Talk: Thread Safe Class file
>>
>>
>>> Alan,
>>>
>>> If you mean to make a TCF that is thread safe, it depends on why you
>>> need it thread safe. Normally just using the method scope for all
>> action
>>> internal to the TCF is enough, however if you need to deal with
>> external
>>> dependencies, ie writing to two different log files in tandem, then
>> you
>>> need to use a higher scope, such as instance, or domain to record your
>>> busy flag. Since I have more than one server, I can only depend on my
>>> database as a single point of reference, and therefore set and release
>> a
>>> flag in my database to solve certain overrun problems. Make sure to
>>> alert yourself or log when contention occurs since it can become a
>>> problem can cause congestion if it goes wrong.
>>>
>>> Robert
>>>
>>> -----Original Message-----
>>> From: Alan Wolfe [mailto:[EMAIL PROTECTED]
>>> Sent: Monday, March 01, 2004 12:42 PM
>>> To: [EMAIL PROTECTED]
>>> Subject: Re: Witango-Talk: Thread Safe Class file
>>>
>>> hey Bill, correct me if im wrong but wouldnt this work too? I just
>> like
>>> this method because it waits until the other thread is done, so you
>> dont
>>> have to have code to recheck if it's busy.
>>>
>>> while (user$active != 0)
>>> {
>>> (doing nothing...)
>>> }
>>>
>>> user$active = 1;
>>>
>>> do the stuff
>>>
>>> user$active = 0;
>>>
>>> ----- Original Message -----
>>> From: "Bill Conlon" <[EMAIL PROTECTED]>
>>> To: "Witango-Talk" <[EMAIL PROTECTED]>
>>> Sent: Monday, March 01, 2004 9:11 AM
>>> Subject: Re: Witango-Talk: Thread Safe Class file
>>>
>>>
>>>> Here's pseudo code to handle critical sections:
>>>>
>>>> if (user$active>0)
>>>> error return, "sorry, you have a request pending, try again"
>>>> else
>>>> user$active=user$active+1
>>>> if (user$active=1)
>>>> process stuff
>>>> else
>>>> error return: "sorry a thread inserted itself between the
>> first
>>>> error check and the processing check"
>>>> endif
>>>> user$active=user$active-1
>>>> good return
>>>>
>>>>
>>>>
>>>>> Where would I look to find out how to create a "thread safe" class
>>> file?
>>>>>
>>>>> Steve Fogelson
>>>>> Internet Commerce Solutions
>>>>
>>>
>>> ______________________________________________________________________
>>> _
>>> _
>>>>> TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf
>>>>>
>>>>
>>>>
>>>> Bill Conlon
>>>>
>>>> To the Point
>>>> 345 California Avenue Suite 2
>>>> Palo Alto, CA 94306
>>>>
>>>> office: 650.327.2175
>>>> fax: 650.329.8335
>>>> mobile: 650.906.9929
>>>> e-mail: mailto:[EMAIL PROTECTED]
>>>> web: http://www.tothept.com
>>>>
>>>>
>>>>
>>>
>> _______________________________________________________________________
>> _
>>>> TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf
>>>
>>>
>> _______________________________________________________________________
>> _
>>> TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf
>>>
>>>
>> _______________________________________________________________________
>> _
>>> TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf
>>
>> _______________________________________________________________________
>> _
>> TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf
>>
>> _______________________________________________________________________
>> _
>> TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf
>> _______________________________________________________________________
>> _
>> TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf
>>
>> _______________________________________________________________________
>> _
>> TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf
>
>________________________________________________________________________
>TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf
>
Bill Conlon
To the Point
345 California Avenue Suite 2
Palo Alto, CA 94306
office: 650.327.2175
fax: 650.329.8335
mobile: 650.906.9929
e-mail: mailto:[EMAIL PROTECTED]
web: http://www.tothept.com
________________________________________________________________________
TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf