C ++ Два потока, один для ввода и один для вывода - PullRequest
0 голосов
/ 22 мая 2019

Я разрабатываю консольное приложение, и я не могу понять, как решить эту проблему.

Моя проблема заключается в следующем:

Мое приложение работает в двух потоках (1)который генерирует вывод и (2) тот, который ожидает, когда пользователь напишет строку на консоли.Моя проблема в том, что иногда поток 1 может записать несколько строк в консоль, «разбивая» то, что пишет пользователь, и таким образом путает его с тем, что было написано.

Сейчас я изучаю две возможности:

(1) Открытие двух консолей, одна для вывода и одна для ввода.Для этого подхода у меня уже есть идея из ресурсов, которые я нашел в Интернете, но мне не очень нравится это решение.

(2) Каким-то образом, резервируя строку или несколько строк, которые показывают только то, чем является пользовательзапись в поток 2 и остальные строки, чтобы показать вывод, сгенерированный потоком 1.

Возможны ли доступные два?Есть ли у меня ресурс для изучения?Или есть более используемый подход?

Спасибо!

1 Ответ

0 голосов
/ 22 мая 2019

Обычный подход - использовать эксклюзивный поток для взаимодействия с GUI. Бизнес-логику можно выполнять в разных потоках.

Вы используете консоль, но это та же идея. Только поток должен иметь возможность взаимодействовать с ним.

...