One thing to note is that BT/ET actions are very robust with the right
database, and can be trusted.

Also, look into stored procedures, and using internal (to the SP)
transactions. Rather than using a variable to block further db access,
use a value in a table (controlled by the SP).

Better yet, just do everything in the SP and let the DB worry about the
overhead, they are much faster for most things.

Robert

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] 
Sent: Thursday, April 22, 2004 5:15 PM
To: [EMAIL PROTECTED]
Subject: RE: Witango-Talk: Sleep & While + explanations


Thank you all for your suggestions and comments.

My confusion is generated by the fact that I do not know how to control
the
DB access anymore.
In Tango 2000, it was (relatively) simple. Using "Begin Transaction/End
Transaction" I knew that all other processes would not use the DB while
my
writing operation (for ex.), and the thread would not have been
suspended
while doing this.

In V5.0, if I understand this correctly:
1- there is no way to guarantee, the thread will not be interrupted
while
processing inside BT/ET; and 
2- there is no way of knowing if the BT/ET has already started in a
another
switched-out thread, unless I design & use some method to synchronize
threads (just like a mutex, for ex.).

My goal was to associate a variable with the exclusive rights to the DB.

For ex. if the variable>0 it shows the DB is locked, I can wait in a
loop,
using sleep() for a few ms;
When the variable=0 I can increment it, and then check if variable=1,
lock
the DB for exclusive access, etc.
I do not believe that using the available metatags I can have such a
fine
control over the process to avoid dead locks or race conditions; but it
is
seems better than not trying to control it at all. 
(There is probably a good reason why .NET implemented so many classes to
prevent mishandling of threads.)

Of course I might be wrong on all accounts.


Mike.

-----Original Message-----
From: Scott Cadillac [mailto:[EMAIL PROTECTED] 
Sent: Thursday, April 22, 2004 12:25
To: [EMAIL PROTECTED]
Subject: RE: Witango-Talk: Sleep & While + explanations

Hi Mike,

> I am a little confused by your response, since my question was in 
> regard to sleep( milliseconds), which I need in order to save CPU in a

> loop that checks resource availability. Any browser would wait just 
> fine for a couple of hundred milliseconds.

If this is the case, why put the check into a loop at all?

If the system needs a tiny bit of time before the resource can respond,
then
just let it run as is.

I understand "why" you want a sleep() function, but I would consider
carefully it's implications before using it in a Web application.

 
> BTW, I am doing exactly what you suggest, rethinking my application. 
> Until now it worked just fine, under Tango 2000, never had a problem. 
> It still works OK now, under Witango 5 in a test environment, but I 
> feel uneasy to move it into the production because I did not test it 
> in a real, multiuser environment. The big problem is I lack 
> understanding of how to deal with multi-threading when no controlling 
> mechanism is available for managing threads.

I guess we must be missing a piece of the puzzle here, as to
specifically
what multi-threading concerns you have.

If the issue revolves around a particular database query that has a
habit of
taking a long time, then you will be happy to learn that "threading"
under
Witango 5.x Servers are greatly improved.

Tango2000 used "co-operative" threading, whereas Witango 5.x uses
"pre-emptive" threading. This is an automatic build-in feature of the
Server.

If resources get scarce, then Witango will respond with greater speed
and
efficiency then Tango2000 ever can.

The CPU usage spawned by the "waiting" will be reasonably managed - if
it's
not, then this is the point where "I" would rethink what I'm doing.

But yes, managing your own Threading is a great advantage too - I also
do
NET development. But even with this kind of power, if a process is going
to
routinely take a long time, then it's time to rethink the application
design.

I recently did a Custom Reporting application. Another department of my
customer was supplying these huge XML files full of Financial figures
(200mb+), and my Web app was dynamically parsing the XML for particular
content and displaying them for the web - simple enough work.

But....the processing was incredibly time/CPU intensive for each
request,
because the files were so huge, that the user was waiting up to 10
seconds
for responses.

So, I did a complete rebuild of the project where I built a Windows
Service
application that pre-parsed the XML files into smaller more manageable
chunks. Instead of one big file, I now have 200 tiny ones.

The project got carried away because the sample XML files I started with
were less than 1mb - next time I'll think further ahead.

Hope this helps....



> Mike Bravu.
> 
> -----Original Message-----
> From: Scott Cadillac [mailto:[EMAIL PROTECTED]
> Sent: Thursday, April 22, 2004 11:03
> To: [EMAIL PROTECTED]
> Subject: RE: Witango-Talk: Sleep & While + explanations
> 
> Hi Mike,
> 
> With regards to your wishful thinking of a sleep() function in 
> Witango, I think you need to rethink your application a bit.
> 
> Regardless of the development platform that may, or may not, support a

> "sleep" or "wait" process - the client component (browser) of your 
> "Web"
> application has limited tolerance for such a thing.
> 
> Browsers don't like waiting. Although you can craft some special HTTP 
> output to make a browser wait (checkout the "Push" attribute), the 
> results are not always User friendly.
> 
> I would suggest building a special webpage/window that periodically 
> "checks"
> with the Server if the requested resource is free yet. You can do this

> with JavaScript, or with a META Refresh - and also provide Users with 
> intelligent messages.
> 
> I know this is not a simple solution from a developer point of view, 
> because it's more in the interest of the end-user - but who said 
> programming would be easy?
> 
> -----
> And although it has been a long time coming, I understand an <@WHILE> 
> Meta tag will be coming in version 5.5 (or 6.0?).
> 
> 
> Hope this helps. Cheers.... 
> 
> (Note: new phone number April 26th: 403-254-5002)
> 
> Scott Cadillac,
> 403-281-6090 ~ [EMAIL PROTECTED]
> ------------
> XML-Extranet ~ http://xmlx.ca ~ http://forums.xmlx.ca Well-formed 
> Programming in C# .NET, Witango, MSIE and XML
> ------------
> IExtranet ~ http://iextranet.ca
> Witango ~ http://witango.org
> EasyXSLT ~ http://easyxslt.ca
> IIS Watcher ~ http://iiswatcher.ca
> ------------
>    
> 
>  
> 
> 
> ________________________________
> 
>       From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] 
>       Sent: Thursday, April 22, 2004 10:25 AM
>       To: [EMAIL PROTECTED]
>       Subject: RE: Witango-Talk: Sleep & While + explanations
>       
>       
>        
>       I need sleep() (on the server side) to wait for availability on
a 
> locked resource ( without loading the CPU ).
>       If I use an external procedure (dos wait) I am not sure what is
the 
> delay needed to load the DOS interpreter; and I would prefer not to 
> bind the the solution to an OS. Java can solve all this (provided it 
> is already
> loaded) but I was curious to see if somebody found a simpler way.
>        
>       I was aware of while action and that would work just fine;
however 
> that means I end up fragmenting a results page action; I'd rather use 
> <@FOR> if I can make it act as a while (which can be done in all 
> programming languages that I know), but I found no way to do that with

> witango.
>        
>       I wonder, since there are <@TIMER> and <@FOR> metatags, why not 
> <@SLEEP> and <@WHILE> as well? They are obviously closely related and 
> I assume they cannot be that difficult to implement...
>        
>                
>       Thank you for all your suggestions.
>       Mike Bravu.
>        
>        
>        
> 
> ________________________________
> 
>       From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] 
>       Sent: Thursday, April 22, 2004 03:28
>       To: [EMAIL PROTECTED]
>       Subject: Witango-Talk: Sleep & While
>       
>       
>       Hello all,
>        
>       Can anybody help me out with the Witango equivalents for:
>       1- sleep( milliseconds );   and
>       2- while( true ) { }
>        
>       The solutions that I found are not acceptable:
>       1-  except for using externals, if I try to use <@TIMER> it
seems I 
> burn the CPU, which is not what I want;
>       2-  <@FOR> </@FOR> does not really work or I do not know how to
setup 
> Start/Step/Stop
>        
>       If the solution is already explained in the documentation I 
> apologize, I just could not find it.
>        
>        
>       Thank you,
>       Mike Bravu
>       
> ______________________________________________________________
> __________
>       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

Reply via email to