Er, if we're messing with this, and with rescheduling processes when you change priorities, do we want to consider how Processor>>yield behaves? Should it allow a lower priority process to run if there are no processes runable at the same priority?
On 23-Jan-06, at 7:54 PM, Andreas Raab wrote:
Cees De Groot wrote:
Should this be adopted?
The VW fix does seem overly complex for Squeak - the main issue is that in Semaphore>>critical: we can be interrupted between the following two lines:
self wait. [blockValue := mutuallyExcludedBlock value] ensure:[self signal].
Simply moving #wait inside the ensure'd block will cure the problem (for very, very specific and nitpicky reasons that I'm not going to explain in detail unless someone actually wants to know ;-)
Cheers,
- Andreas
-- ======================================================================== === John M. McIntosh johnmci@smalltalkconsulting.com 1-800-477-2659 Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com ======================================================================== ===