У меня есть клиент, который работает на 2 потока. Один отправляет данные, а второй принимает данные. При отправке данных у меня есть std::getline(std::cin,string)
. Теперь в этом потоке у меня есть бесконечный цикл, который заканчивается, если заканчиваются вторые потоки или если пользователь вводит команду EXIT, все отлично работает, ожидая, что когда второй поток завершится и бесконечный цикл завершится, программа все еще ждет нажатия кнопки из-за std::getline
.
Теперь вопрос:
Как я могу отправить данные в getline для «поддельного» нажатия кнопки, чтобы мне не приходилось нажимать кнопку для завершения программы?
Второй вопрос. У меня есть сервер, который для каждого клиента запускает другой поток, а основной поток сервера принимает новые соединения, он также отлично работает. Клиент хранится в std::list
. Каждый поток имеет бесконечный цикл, который получает данные от клиентов. Если клиент слишком сильно ругается, его выгоняют с сервера, но вот проблема, когда пользователь делает это, я просто прерываю бесконечный цикл, и поток заканчивается, но я также хотел бы удалить клиента из списка, поэтому в основном потоке программы я должен проверить каждый раз, если какой-либо поток вернул правильное значение, и если он удалил элемент из списка?