Disclosed are methods of allocating tasks for a print job in a multi-threaded system. One method determines a utilisation measure of at least one of a plurality of intermediate data generating threads, and a complexity limit of a intermediate data generation task. The complexity limit is decreased if the determined utilisation measure of the intermediate data generating thread is under a predetermined threshold. The complexity limit limits a processing load of the intermediate data generation task to be allocated to the intermediate data generating thread. The method then compares the processing load of the intermediate data generation task to be allocated with the determined complexity limit, and allocates the intermediate data generation task to the intermediate data generating thread for processing in an event that the processing load of the intermediate data generation task satisfies the complexity limit.
展开▼