1. A method of operating a microprocessor system that includes a plurality of functional units arranged in a pipelined fashion and in which functional units of the pipeline can process threads for execution at the same time as other functional units of the pipeline are processing other threads for execution, the method comprising: if a thread cannot be processed by the functional unit it has reached, passing the thread to the next functional unit without processing it, so as to allow the thread to continue through the pipeline; and recirculating a thread whose processing has not been completed on its way through the pipeline from the end of the pipeline to the beginning of the pipeline for sending through the pipeline again.