Hi Ben,
On 01/05/17 15:23, Ben Coman wrote: > > > I was responding to your literal question about ProcessScheduler and > what part of the system does the context switching. > Now I'm guessing your interest is more about user-level > multi-threaded behaviour of Processes, > so I hunted down some discussions you may find be interesting > > * http://forum.world.st/The-Trunk-Kernel-mt-1009-mcz-td4887889.html > (search for preemptionYields) > > * http://forum.world.st/threading-in-Pharo-td4750534.html > > * http://forum.world.st/threading-in-Pharo-td4750534.html > > * http://forum.world.st/VM-Maker-VMMaker-oscog-eem-942-mcz-td4790993.html > > Quite interesting, indeed, and very detailed. > However I didn't quite follow where you said... "in absence of > other synchronization points." > Do you mean without suspend/resuming Processes or waiting/signalling > Semaphore > and something else? > Yes, I mean this. > I'm not sure if this is what your looking for, but in summary... > Processes at the same priority are scheduled cooperatively. they must > deliberately yield or sleep to be put at the back of their priority's > run-queue.before another process of same priority can run. Right, this is the part explicitly controlled by the programmer and which is synchronous from the Process' own perspective. Higher > priority processes pre-empt lower priority processes only when they are > woken (i.e. signalled or resumed). The pre-empted process stays at the > front of its priority's run-queue so that the higher-priority-preemption > is transparent to the same-priority-cooperative scheduling. > This is the most synthetic explanation I've seen so far! Clear and concise. Thanks and greetings Raffaello