#ProducerConsumerBuf
Главный поток создает 2 побочных потока.
1й поток берет из входного файла строку и добавляет ее в буфер;
2й поток берет из этого буфера строку и выводит её в выходной файл, добавляя номер строки в начале.
1й поток завершается, когда конец файла;
2й - когда в буфер больше не поступает данных.
Главный - после отработки двух побочных.
Буфер реализован на стандартной очереди std::queue.