Patent ID: 8453157

Claim:
A method, comprising: executing by a first application in a computational device having a plurality of simultaneous multi-threaded (SMT) processors, a first driver thread and a second driver thread that use resources of a first SMT processor of the plurality of SMT processors, and a third driver thread and a fourth driver thread that use resources of a second SMT processor of the plurality of processors; polling periodically by the first driver thread, the second driver thread, the third driver thread, and the fourth driver thread, to determine whether a second application needs to execute on at least one of the plurality of SMT processors, wherein the first driver thread, the second driver thread, the third driver thread, and the fourth driver poll the second application at different times; while polling periodically, starting synchronization of the first driver thread and the second driver thread, in response to determining by the first driver thread that the second application needs one of the plurality of SMT processors for execution; while polling periodically, also starting synchronization of the third driver thread and the fourth driver thread, in response to determining by the third driver thread that the second application needs one of the plurality of SMT processors for execution; determining whether the first driver thread and the second driver thread complete synchronization prior to the third driver thread and the fourth driver thread, or whether the third driver thread and the fourth driver thread complete synchronization prior to the first driver thread and the second driver thread; completing synchronization of the first driver thread and the second driver thread while the third driver thread and the fourth driver thread have not completed synchronization; receiving, an indication by the second application, from the first driver thread that the first SMT processor is available, in response to completing synchronization of the first driver thread and the second driver thread; in response to receiving the indication by the second application, executing, the second application on the first SMT processor while the first driver thread and the second driver thread waits, and indicating in response to pending polls and new polls that no SMT processor is needed by the second application; and in response to the executing of the second application on the first SMT processor, stopping synchronization of the third driver thread and the fourth driver thread, and continuing execution of the third driver thread and the fourth driver thread.