[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: exception systems



    Will:
    I think floating point traps and interrupts are both important
    sources of exceptions.  I agreed with your analysis of asynchronous
    interrupts, but I draw an opposite conclusion:  Your analysis shows
    that proper handling of asynchronous interrupts presupposes an
    adequate exception system.

    I mentioned asynchronous interrupts to warn against thinking of
    exceptions as uncommon events.  MacScheme was designed to handle
    about 10 timer exceptions per second, and often handles about 30
    per second in practice.  Nowadays it would be more reasonable to
    handle well over a hundred timer exceptions as a matter of course
    (faster than the eye can see), and to handle well over a thousand
    exceptions per second when profiling, without any noticeable
    degradation in performance.

I would like to take a stand against referring to async interrupts as
exceptions.  I'd like to retain the word "exceptions" as meaning something
synchronous -- the result of something my program did at a particular point,
e.g. "I added those two numbers together and it blew up on me." Not something
that could be caused by an external agent, completely independent of what my
program was doing.

(Synchronous) Exceptions are just extra edges in your control-flow
graph. Asynchronous signals are a communications mechanism between concurrent
agents (in Unix, processes). The machinery appropriate for these two types of
thing is not the same.

I hate the fact that Unix confounds these two concepts, and would like to
avoid doing it in Scheme.
    -Olin