Интересно, как можно решить такую проблему....
Программа содержит 3 потока:
1. Поток получения данных: блокируется на сокете в ожидании данных; полученные данные помещает во входной буфер.
2. Поток отправки данных: извлекает данные из выходного буфера и отправляет их в сокет.
3. Основной поток: извлекает данные из входного буфера, обрабатывает их и помещает в выходной.
Внимание вопрос: в какой-то момент времени основной поток решает закрыть соединение (к примеру, нужно присоединиться к другому узлу). Как это сделать?
Установка флага, проверяемого из потоков не подходит, т.к. поток получения данных может быть заблокирован на read()... Есть идеи?
Похожие темы
- Форум Блокировка (pthread_mutex_lock) (2002)
- Форум Оверхед на переключение контекста при использовании неблокирующих сокетов (2015)
- Форум blocking / non-blocking calls (2018)
- Форум Как организовать завершение работы сервера? (2008)
- Форум Держать кучу соединений (2009)
- Новости Vector 0.3.0 (2019)
- Форум Расскажите в деталях как пользоваться неблокирующими сокетами (2017)
- Форум Преобразовать синхронный запрос в асинхронный (2012)
- Форум KEEPALIVE не работает как ожидается (2008)
- Форум [Blocking queue] Не много ли потоков? (2010)