This queue is designed to mediate the aggregation of data into a shared output buffer. The number of data to be aggregated must be provided at initialization. Producer threads then "post" data to the queue and any single thread can temporarily assume the role of consumer to "process" the data.