[FIX] WorldState>>runStepMethodsIn: (update)

stefan kersten steve at k-hornz.de
Sun Jan 26 17:40:24 UTC 2003


Lex Spoon wrote:
> It is excellent to see Morphic getting more robust against imperfect
> morphs.  My heart sinks every time some student does something obvious
> and ends up with a hung system.

it's making the system more robust _and_ improving documentation :)

> I misread your solution at first!  What it is doing is only running
> messages that were there when the method is called.  You did *not* just
> pick some arbitrary number like 100 and only run the first 100 defered
> messages that are there, which I was about to flame about.  :)

i had a second look and tested some more:

the changeset i posted doesn't really fix the problem, because the
message queue is growing as needed, so when sending high-density streams
of messages to the UI, it still hangs as soon as it gets a chance to
run, since the deferred message dispatcher dispatches _all_ available
queue items.

the "right" solution IMHO would be to impose a worstcase bound on the
dispatching process as a whole in terms of execution time (assuming the
respective deferred items execute fast); updated changeset attached ...

btw. my problem was sending to the transcript from a high priority
scheduler approx. every 10 milliseconds. not a wise move, i know, but
when the UI locked, i thought the problem was in my scheduler code.

with the attached changeset i at least get a chance to stop the
scheduler and flush the message queue :)


-------------- next part --------------
A non-text attachment was scrubbed...
Name: WorldState-UIMessages-fix-sk.2.cs.gz
Type: application/octet-stream
Size: 772 bytes
Desc: not available
Url : http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20030126/d99097cb/WorldState-UIMessages-fix-sk.2.cs.obj

More information about the Squeak-dev mailing list