перехода на новую строку и затирания экрана?
Мол есть некая строка в одном потоке
data = 1
В другом потоке
data1 = 1
И данные 2 переменные паралелльно должны обновлятся. Паралельность реализовал через thread, а вот как обновлять только значения - не понимаю.
Данную программу реализовываю под linux.
Спасибо)
Сейчас это выглядит вот так:
Thread ID: 139784412276480 data0 3
Thread ID: 139784412280640 data1 6
Thread ID: 139784412280640 data1 7
Thread ID: 139784412276480 data0 4
Thread ID: 139784412280640 data1 8
Из того что я понял, вы хотите выводить в консоли на одной и той же строке обновлённое значение каждой из переменных?
Строки в колонки выводить? Можно использовать терминальные контрольные последовательности.
Если это то, что ты хотел, то system("cls")
Тут будет очистка всего терминала. А хотелось бы, чтоб все данные оставались в нём
Дак у тебя частота обновления консоли тебе будет выводить, будто все на том же самом месте
Это очень плохой совет. Поднимать лишний процесс, чтобы очистить экран? 🤦♂️
Сейчас погуглю, что это. Попробую по-другому объяснить, что хочу: Мол есть 2 строчки - data0 = x - data1 = y И я хочу, чтоб на экране обновлялись только x и y. Без затираний всего остального)
Дак где предложения, кроме осуждения предложения
Предложения были уже, взять библиотеку готовую :) Можно конечно ручками гонять Esc последовательности, но терминалы бывают разные ...
Оператор присваивания
Немного не понял?
Хорошо что ещё не было Thread ID: 139784412276480 data0 Thread ID: 3 139784412280640 data1 data 7 Thread ID: 4 ... На Винде обращение к консоли из разных потоков даёт прикольную мешанину текста. У Вас как потоки синхронизируются кому как и когда к общему ресурсу консоль обращаться?
Как я понимаю, за это отвечает th.join(); и мешанины никакой нет. upd: Мешанина все же есть, не замечал ее. Извеняюсь =) Thread ID: 140500912256832 data1 0Thread ID: 140500912252672 data0 0
std::osyncstream в помощь
Обновлять переменную - оператор присваивания
Чтобы напечатать значение в том же месте где она была напечатана ранее на экране консоли, стандартных средств языка мало, надо использовать библиотеки с поддержкой конкретной OS, на Linux это библиотека ncurses. Но я не думаю что тебе надо этим заниматся для учебной программы, потому что тебе придётся переделывать весь ввод и вывод через ncurses
Обсуждают сегодня