Как известно, асинхронный ввод/вывод происходит по сигналу SIGIO.
Но вот незадача, если у нас на каждый поток приходится по соединению(сокету), то как определить в какому потоку(сокету) пришел этот сигнал????
select или poll не предлагать, надо именно по сигналу реакцию.
Зачем это надо?
Вот типичный случай:
int stop = 0;
......
void sig_io(int sig)
{
recv(sock, stop, sizeof(stop));
}
.....
while(1)
{
send(sock, ...);
if(stop)
break;
}
Т.е. нужно уметь получить команду на остановку в любой момент времени.
Причем нужно эту функциональность перенести на несколько потоков, чтобы каждый поток смог так работать.
Ответ на:
комментарий
от anonymous
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Неустоичивая работа сокетов в O_NONBLOCK режиме (2004)
- Форум Падение сетевого сервера. (2008)
- Форум Recv снова в ожидании,в то время как Send уже все передал. (2015)
- Форум Подключиться к unix-сокету через bash (2020)
- Форум разбираюсь с классами непонятные ошибки при компиляции объясните в чем я неправ??? (2010)
- Форум Клиент-Сервер Socket linux (Музыкальный сервис) (2014)
- Форум KEEPALIVE не работает как ожидается (2008)
- Форум Получение списка интерфейсов через netlink (2013)
- Форум Проблема повторного соеденения клиента к серверу через сокет (C++) (2015)
- Форум Сокеты, Передача данных, C/C++ (2006)