Igor Stasenko wrote:
This also makes 1 less process hanging around, because there is no need in setting up the userInterruptWatcher and semaphore for it once you can do it from event ticker like following:
(self isInterruptEvent: event) ifTrue: [ interruptHandler isAlreadyRunning ifFalse: [ [self handleInterrupt] forkAt: Processor severePriority ] ]
My memories of the previous attempt are coming back now ;-) The above is another one of 'em gotchas. If you have more than one process going wild you most definitely want to be able to fire off the interrupt handler multiple times. Which reminds me of yet another gotcha: "handlerBlock copy fixTemps" please or you are for a world of pain ;-)
Cheers, - Andreas
This makes it irrelevant, at which priority the current event handling running and safe from gotchas, pointed by Andreas (in numerous "Sensor anyFooBar" sends spreaded throughout the image).
Also, i think, it would be good to guarantee that there is only single Process which making calls to primitive and fetching events from VM - obviously the event ticker process. The rest processes should be allowed to talk with Sensor only through shared queue.