1. A method of submitting data to a shared queue by multiple producer threads, the method comprising: allocating a first portion of memory in the shared queue for storing first thread output data to be written by a first producer thread associated with the multiple producer threads by advancing an outer pointer that indicates a next entry in the shared queue that is available for allocation; writing, by the first producer thread, the first thread output data to the first portion of memory in the shared queue; determining, by the first producer thread, that the first portion of memory in the shared queue that was written was previously the only portion of memory in the shared queue that had been allocated but to which data had not yet been written; and in response, advancing an inner pointer that indicates a last contiguous entry in the shared queue to which data has been written.