1. In a multi-processor system, a method for selecting one of a plurality of processors to process an interrupt, comprising the steps of: (a) assigning to a respective task being executed on each one of the plurality of processors, a first attribute identifying whether the task is speculative; (b) assigning at least one second attribute to the respective task, the second attribute identifying whether the respective task can be interrupted by a respective class of interrupts associated with the second attribute; (c) receiving an interrupt having a received interrupt class; (d) identifying a subset of the plurality of processors that can be interrupted by the received interrupt based on both the respective first and second attributes assigned to the respective task being executed on each respective processor and the received interrupt class; and (e) selecting one of the processors in the subset to process the received interrupt, if the subset includes at least one processor.