Вы сами разрабатываете консоль, так что это не должно быть большой проблемой.
Консоль - это в основном набор текстовых строк, которые отображаются. Пользовательский ввод отражается, поэтому пользователь видит, что он печатает. Это означает, что последняя строка консоли является особенной, это «редактируемый входной буфер». Все остальные строки выводятся. Когда пользователь нажимает Enter
, вы запускаете буфер редактирования. Шаг 1 при выполнении - создание приватной копии буфера редактирования, шаг 2 - очистка буфера редактирования, а шаг 3 - копирование приватной копии на выход.
Следовательно, в любой момент есть только одна частичная строка, и она изменяется только при вводе пользователем. Все остальные строки заполнены и меняются построчно. Журнал вашей программы происходит между двумя пользовательскими вводами и, следовательно, получает свою собственную строку. В многопоточной программе это означает, что для функции «Console :: AddLine» потребуется внутренний мьютекс (CriticalSection for Win32).