Как известно, асинхронный ввод/вывод происходит по сигналу SIGIO.
Но вот незадача, если у нас на каждый поток приходится по соединению(сокету), то как определить в какому потоку(сокету) пришел этот сигнал????
select или poll не предлагать, надо именно по сигналу реакцию.
Зачем это надо?
Вот типичный случай:
int stop = 0;
......
void sig_io(int sig)
{
recv(sock, stop, sizeof(stop));
}
.....
while(1)
{
send(sock, ...);
if(stop)
break;
}
Т.е. нужно уметь получить команду на остановку в любой момент времени.
Причем нужно эту функциональность перенести на несколько потоков, чтобы каждый поток смог так работать.
Форум —
Development