1. A method of allocating hardware resources for an application program configured to execute in a computer of the type having a resource allocation manager configured to manage hardware resources organized into a plurality of nodes, wherein each node includes processor and memory hardware resources, the method comprising: in the application program, specifying a home node preference and a node strength preference for the application program; in response to a request to create a thread for the application program, setting a home node for the thread from among the plurality of nodes using the home node preference, and setting a node strength for the thread based upon the node strength preference; and in response to a request to dispatch the thread: dispatching the thread to a processor resource in the home node for the thread if the home node has an available processor resource; waiting to dispatch the thread to a processor resource in the home node for the thread if the home node does not have an available processor resource and the node strength for the thread is strong; and dispatching the thread to a processor resource in a node other than the home node for the thread if the home node does not have an available processor resource and the node strength for the thread is weak.