Scripts that are already running
Richard Gaskin
ambassador at fourthworld.com
Fri Sep 24 14:12:10 EDT 2010
DunbarX wrote:
> This all came about because someone wanted a single universal watchdog on
> his stack. He had several handlers in several places, all of which could
> create a condition he wanted to act upon. So the "send in time" handler fit that
> bill. If he created yet another such handler somewhere, it would be
> covered. But it occurred to be that if the condition was met and the handler still
> had much to do and might take a long time to do it, then the condition could
> not be dealt with until that handler ends. It seemed intriguing to think
> that something could monitor, say, the state of variables, from outside the
> handler while it was running.
>
> Anyone think this is a useful, perhaps monumental, feature?
Indeed it would:
Add Threaded messaging and or execution in Transcript
<http://quality.runrev.com/qacenter/show_bug.cgi?id=2832>
But threading comes with an additional level of responsibility. Right
now we almost never have to worry about race conditions, an area where a
lot of programmers using threaded languages spend thousands of hours
each year debugging hard-to-track-down issues.
Once you introduce threading into the language it's like handing someone
a loaded gun with a map to their foot. Still very useful, and well
worth implementing, but it would so fundamentally change the messaging
system that it would raise the learning curve and open up many new ways
to make mistakes. :)
For those who need it threading would be a godsend, and RunRev couldn't
add this fast enough for me. Many server processes could be much more
optimized with a threaded implementation.
In the meantime, for single-user apps working within a non-threading
system isn't usually so bad. As we've seen in this example, it usually
requires no more than a single line of code to have any additional
checking happening inside of any handler you like, and with that
requirement it leaves the scripter explicitly in control of the
interactions between things.
For property settings this might even be reduced to zero additional
lines of code in the repeat loop if you include a setProp handler that
will respond to the change:
-- Main handler:
on mouseUp
repeat with i = 1 to 100
set the uMyProp of this stack to i
end repeat
end mouseUp
-- In stack script, library, or any other place in the
-- message path:
setProp uMyProp pValue
if pValue = 50 then
DoSomethingCool
end if
end uMyProp
It can be tempting to use getProp and setProp in places where more
controllable and concise function and command calls can work well as
accessors, but when you need 'em they're handy to have available.
--
Richard Gaskin
Fourth World
LiveCode training and consulting: http://www.fourthworld.com
Webzine for LiveCode developers: http://www.LiveCodeJournal.com
LiveCode Journal blog: http://LiveCodejournal.com/blog.irv
More information about the use-livecode
mailing list