Say for example a server that receives network requests at a certain priority, then spawns worker processes at a lower priority. When the server receives a new request, it should interrupt the current worker process to fork another, but then the previously running worker process should continue, not be put to the back of the queue. That way worker processes can complete in the order that they were forked, not shuffled randomly to the back based on some external factor. I agree with Eliot that VisualWorks does this correctly and in Squeak it's a bug. I guess you could work around it with Semaphores, but that adds a large burden on the developer.

Mike Hales
Engineering Manager
KnowledgeScape
www.kscape.com


On Tue, Apr 13, 2010 at 9:21 PM, Chris Muller <asqueaker@gmail.com> wrote:
> If you have some task that is clearly higher-priority than some other task (eg: VoIP vs. polling an email server), then it's better to simply use a higher-priority Process rather than relying on particular scheduling behavior within a single priority-class.

Hm, agreed..  So.. what is a use-case for when you might want the type
of cooperative scheduling Eliot mentioned?