Dave,
Thanks. A related thought is the following: use critical sections early and often. Deadlocks are (in my experience at least) generally easy to resolve from a dump of callstacks. All but one thread will be waiting on a semaphore of some type; then look for the ones you created, and look for the critical sections to see if you are making it impossible for the code to run. Common fixes involve (carefully!) splitting one critical section into pieces, adding a shared queue to move objects from source to sink thread, etc. When interacting with the GUI, post an action to the input queue vs. making the calls directly from the worker thread.
Bill
Wilhelm K. Schwab, Ph.D. University of Florida Department of Anesthesiology PO Box 100254 Gainesville, FL 32610-0254
Email: bschwab@anest.ufl.edu Tel: (352) 846-1285 FAX: (352) 392-7029
lewis@mail.msen.com 09/17/07 7:33 AM >>>
On Sun, Sep 16, 2007 at 10:51:51PM -0400, Bill Schwab wrote:
Another thing to consider is that user interfaces tend to like changes to be injected on their main thread. I forget the name of Squeak's notion of a "deferred action," but I can find it later if
there
is a need - I suspect you or one of our peers will be able to provide the relevant selector name. My primary contribution is to ask whether you have considered it. I tend to queue GUI updates whether they need it or not ;)
The selector is WorldState class>>addDeferredUIMessage:
See also http://bugs.squeak.org/view.php?id=1578 if MVC consistency is if interest.
Dave
_______________________________________________ UI mailing list UI@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/ui
On 17/09/2007, Bill Schwab BSchwab@anest.ufl.edu wrote:
Dave,
Thanks. A related thought is the following: use critical sections early and often. Deadlocks are (in my experience at least) generally easy to resolve from a dump of callstacks. All but one thread will be waiting on a semaphore of some type; then look for the ones you created, and look for the critical sections to see if you are making it impossible for the code to run. Common fixes involve (carefully!) splitting one critical section into pieces, adding a shared queue to move objects from source to sink thread, etc. When interacting with the GUI, post an action to the input queue vs. making the calls directly from the worker thread.
Bill
I generally interesting in something similar to javascript event scheme. Don't remember details, but i think it worth some evaluation and analysis, as well as others, for designing own event scheme considering cos and pros of existing ones.
Wilhelm K. Schwab, Ph.D. University of Florida Department of Anesthesiology PO Box 100254 Gainesville, FL 32610-0254
Email: bschwab@anest.ufl.edu Tel: (352) 846-1285 FAX: (352) 392-7029
lewis@mail.msen.com 09/17/07 7:33 AM >>>
On Sun, Sep 16, 2007 at 10:51:51PM -0400, Bill Schwab wrote:
Another thing to consider is that user interfaces tend to like changes to be injected on their main thread. I forget the name of Squeak's notion of a "deferred action," but I can find it later if
there
is a need - I suspect you or one of our peers will be able to provide the relevant selector name. My primary contribution is to ask whether you have considered it. I tend to queue GUI updates whether they need it or not ;)
The selector is WorldState class>>addDeferredUIMessage:
See also http://bugs.squeak.org/view.php?id=1578 if MVC consistency is if interest.
Dave
UI mailing list UI@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/ui
UI mailing list UI@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/ui