wait for messages

David Vaughan drvaughan55 at mac.com
Mon Feb 25 23:06:01 EST 2002


I think we can now answer some of your questions:

> Why should it have worked the first time, but not subsequently?
In my experience, it never waited (in the indefinite sense) and I have 
no idea why it waited for you even once. Your system had some 
coincidental activity that slowed it down at the critical moment?
> Are there messages a script can never see (or that bypass the usual 
> message hierarchy) that, nevertheless, satisfy the wait condition of 
> "wait for messages"?
I doubt it. It just seems to time out after a period up to 500ms.
> Is there a way to see what messages are causing "wait for messages" to 
> stop waiting?
Thanks to Richard Gaskin's Umbrellaman, just posted, I checked and there 
are no known messages causing it to time out. It just stops, as I said 
> Is there a way to get a message trace in general?  That would be 
> extremely useful.
Indeed it is. Check Richard's post and stack.
> What does the following note in the "waitDepth" entry of the Transcript 
> Dictionary mean?
>    "The wait for messages form of the wait command allows Revolution to 
> respond to
>     messages and execute handlers while waiting."
As I said in my earlier post on this, "wait N time" stops other handlers 
while it waits whereas "wait for messages" allows them to execute while 
it waits up to half a second, and "wait N time with messages" waits that 
time while allowing other events and handlers to execute.
> Shouldn't that be "... with messages form ..."?
...well, that is more useful, I think.

> Speaking of "waitDepth", if there are multiple waits pending, in what 
> order to they resume?  Last first?  Last last?  Unspecified?
It appears to me that the waitDepth shows the number of handlers 
executing, not the messages waiting. This is pretty much what the 
documentation says. The tests above (one button) showed a waitDepth of 1 
while the test below (used two buttons, waiting one while pressing 
another) showed a waitDepth of 2.
> Does a message resume all waiting handlers, or just the next in line?  
> I'm guessing all, if the documentation is correct, but the resumption 
> order question still pertains.
> I've looked in the Revolution stacks for examples of "wait for 
> messages".  They all look something like this:
>     . . .
>     repeat while someStatus is empty
>       wait for messages
>     end repeat
>     . . .
> Why wasn't the command "wait while someStatus is empty with messages" 
> used instead?
Can't answer for why, but...
>   Are these equivalent? 
...they are not equivalent. The "wait while...with messages" construct 
will barrel along handling all messages and executing all handlers other 
than the one with the wait statement, until the wait is satisfied when 
it, too, will resume. A "wait for messages" form will continue execution 
of that handler after 500ms even where nothing else has happened.
> One potential difference I see is that the repeat loop won't pause for 
> messages if the loop condition is false, while "wait while" might 
> require at least one message to proceed, even if the condition is 
> already false.  Is that right?
No, it isn't. The condition is checked immediately and, if false, 
processing continues.
> Sorry for being longwinded, but a detailed section in the documentation 
> on execution order, in the presence of waits and sends, would be 
> welcome, and I'm hoping all these questions prompt some of its contents.
Execution order is the usual chronological order of events (and their 
messages). It is not mucked around by wait except to the extent that a 
script is halted in certain usages or that other handlers can execute 
during that time, but, again, in their natural order.
All my comments are research-based, not guru-given, so forgive me for 
any errors, omissions or lack of clarity. My tentative conclusion, 
incidentally, is that "wait...with messages"  is great and "wait for 
messages" is useless. Whether or not the last is true, the documentation 
on it needs improvement.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: text/enriched
Size: 4245 bytes
Desc: not available
URL: <http://lists.runrev.com/pipermail/use-livecode/attachments/20020225/6abf6f47/attachment.bin>

More information about the use-livecode mailing list