// - Read the completion stream receiver until all file jobs have been signaled as completed
// - Read the completion stream receiver until all file jobs have been signaled as completed
// - wait on all worker threads to complete.
// - wait on all worker threads to complete.
// - ensure all data was written.
// - ensure all data was written.
// - truncate the output file to the correct size (sum of all the input sizes) if needed (we do not truncate before fallocate()ing it, so if a previous larger file existed there, it will have trailing garbage)