Интересно, как можно решить такую проблему....
Программа содержит 3 потока:
1. Поток получения данных: блокируется на сокете в ожидании данных; полученные данные помещает во входной буфер.
2. Поток отправки данных: извлекает данные из выходного буфера и отправляет их в сокет.
3. Основной поток: извлекает данные из входного буфера, обрабатывает их и помещает в выходной.
Внимание вопрос: в какой-то момент времени основной поток решает закрыть соединение (к примеру, нужно присоединиться к другому узлу). Как это сделать?
Установка флага, проверяемого из потоков не подходит, т.к. поток получения данных может быть заблокирован на read()... Есть идеи?