1. A method of processing a received packet of a network processor, wherein the network processor comprises a plurality of processing modules and at least one shared memory, the method comprising: generating one or more tasks corresponding to each received packet; sending, by a source processing module, a task message corresponding to a corresponding task to a destination processing module, the task message comprising a task identifier and a task size; receiving, by the destination processing module, the task message; determining, by the destination processing module based on the task size, (i) an associated one of a plurality of task queues of the destination processing module in which to store the task, wherein each queue comprises one or more memory blocks in the at least one shared memory, and (ii) whether the task is larger than space available within a current memory block of the associated queue; if the task is larger than space available within a current memory block of the associated queue: determining an address of a next memory block in the at least one shared memory for the associated queue, and providing the address of the next memory block to the source processing module; providing an offset address within the current memory block of the associated queue to the source processing module; writing, by the source processing module, the task to the at least one shared memory based on at least one of the provided offset address and the address of the next memory block, if provided; if a task is written to more than one memory block of the associated queue: preloading, by the destination processing module, the address of the next memory block to a local memory of the destination processing module; and processing, by the destination processing module, queued tasks without stalling to retrieve the address of the next memory block from the at least one shared memory.