1. A method for communicating data in a network on chip (NOC) processing unit that includes a plurality of nodes, each node including a router and an integrated processor block, each integrated processor block including at least one hardware thread, and each hardware thread executing an instance of a stage of a plurality of stages of a software pipeline, wherein the routers of each node are coupled together in an on-chip network, the method comprising: generating output data from a source hardware thread executing an instance of a first stage of the software pipeline; packetizing the output data into at least one data packet, each data packet of the at least one data packet including a source identifier associated with the source hardware thread and a first message flag indicating whether the data packet is a first message of a message group, wherein the at least one data packet includes a first data packet having a first message flag indicating that the first data packet is the first message of the message group; communicating the at least one data packet from the source hardware thread to a shared inbox associated with a pool of destination hardware threads executing instances of a second stage of the software pipeline among the plurality of hardware threads; and in response to a request from any destination thread among the pool of hardware threads, communicating the first data packet from the shared inbox to an inbox buffer associated with such requesting destination thread and locking data packets stored in the shared inbox having the same source identifier as the first data packet such that the locked data packets may only be communicated to the inbox buffer associated with the requesting destination thread.