Проблема с getline и потоками

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

Как я могу отправить данные в getline для «поддельного» нажатия кнопки, чтобы мне не приходилось нажимать кнопку для завершения программы?

Второй вопрос. У меня есть сервер, который для каждого клиента запускает другой поток, а основной поток сервера принимает новые соединения, он также отлично работает. Клиент хранится в std::list. Каждый поток имеет бесконечный цикл, который получает данные от клиентов. Если клиент слишком сильно ругается, его выгоняют с сервера, но вот проблема, когда пользователь делает это, я просто прерываю бесконечный цикл, и поток заканчивается, но я также хотел бы удалить клиента из списка, поэтому в основном потоке программы я должен проверить каждый раз, если какой-либо поток вернул правильное значение, и если он удалил элемент из списка?


person Darek    schedule 20.06.2011    source источник
comment
Какую многопоточную систему вы используете? Вы можете прервать или убить другой поток, используя определенную библиотечную функцию.   -  person Cem Kalyoncu    schedule 20.06.2011
comment
Windows, я знаю, что могу просто убить поток, но я бы предпочел закончить его и безопасно удалить пользователя   -  person Darek    schedule 20.06.2011