1. A method of processing candidate jobs with a data processor having a plurality of processors, the method comprising: maintaining, by a queue manager, one or more queues that each contain multiple candidate jobs that are to be executed by the data processor, wherein the queue manager associates each candidate job with one of a plurality of communication streams; issuing, by a packet selector, a dequeue request to the queue manager, to deliver a number of candidate jobs for processing to the packet selector; receiving, by the packet selector, a number of dequeued candidate jobs from the queue manager; determining, by the packet selector, an ordered listing of candidate jobs, wherein the ordered listing of candidate jobs is a listing of candidate jobs in the order in which they are received from the queue manager; identifying, by the packet selector, one or more snared resources of a plurality of shared resources required by any of the plurality of processors when executing a first candidate job in the ordered listing of candidate jobs, wherein each of the plurality of shared resources may be used by any of the plurality of processors when executing candidate jobs and when the one or more shared resources are used by a first of the plurality of processors to execute the first candidate job, the one or more shared resources are unavailable to the others of the plurality of processors; and determining, by the packet selector, whether the first candidate job is eligible for execution, by: determining an availability of the one or more shared resources required for the first candidate job, when the one or more shared resources required for the first candidate job are unavailable and no candidate jobs executing within the data processor are from the same communication stream as the first candidate job, determining that the first candidate job is not eligible for execution by any of the plurality of processors of the data processor, and when the one or more shared resources required for the first candidate job are available or one or more candidate jobs executing within the data processor are from the same communication stream as the first candidate job; determining that the first candidate job is eligible for execution by any one of the plurality of processors of the data processor, executing, by the data processor, the eligible candidate job, and incrementing a usage counter for each of the one or more shared resources.