1. A method of processing network data comprising: using three or more threads of a set of threads provided by multiple programmable multi-threaded engines integrated within a processor to process a beginning portion, a middle portion, and an end portion of a data packet, wherein a first thread processes the beginning portion of the data packet, one or more middle threads process the middle portion of the data packet, and a last thread processes the end portion of the data packet; passing first information from the first thread indirectly to the last thread via a first buffer, wherein each of the one or more middle threads progressively updates the first information; passing second information from the first thread directly to the last thread via a second buffer.