Andreas Raab wrote:
p1 := [ (Delay forMilliseconds: 1000) wait. ] forkAt: Processor activePriority+1. p2 := [ | timout | timout := Time millisecondClockValue+1000. [[timeout < Time millisecondClockValue] whileTrue] ensure:[p1 terminate]. ] forkAt: Processor activePriority-1. (Delay forMilliseconds: 500) wait. p2 terminate.
For some reason this explodes with a nil DNU: < but I think the root cause is the (nested) simulation of unwind handling.
Of course, if I'd ever learn how to spell "timeout" correctly, I might find out that that's not the problem. Back to the drawing board... (but I'm still not convinced that the problem isn't somewhere in the nested unwind-protect stuff).
Cheers, - Andreas