1. A method of determining a thread from a plurality of threads to execute a task in a multi-processor computer system, said plurality of threads being grouped into at least one subset associated with a cache memory of the computer system, said task having an associated set of data and a type determined by a set of instructions, said method comprising the steps of: obtaining an execution history of the subset of the plurality of threads; determining a weighting for each of the set of instructions and the set of data, said weightings depending on the type of the task; determining a suitability of the subset of the threads to execute the task based on the execution history and the determined weightings; and subject to the determined suitability of the subset of the threads, determining a thread from the subset of the threads to execute the task using content of the cache memory associated with the subset of the threads.