Чтобы пояснить, мне интересно, каковы плюсы и минусы написания «нескольких одновременных клиентов на одном сервере» с использованием сокетов TCP / IP и обработчиков сигналов, которые вызываются в ответ на условия сигнала «можно читать / писать»на дескрипторах файла сокета клиента?Насколько я понимаю, по крайней мере ядро Linux использует сигналы, чтобы уведомить процесс об условиях, связанных с дескрипторами сокетов?Очевидно, что нужно быть осторожным в обработчике сигналов, который, как я понимаю, прерывает процесс - повторный вход, атомарность, неопределенное состояние для переменных и т. Д.
Но не нужно, чтобы сигналы выполняли большую часть работына самом деле совсем наоборот - добавить сокет в набор сокетов, готовых для чтения, записи, очень похоже на то, что делают select
, poll
и epoll_wait
, и позволить потоку кода процесса по умолчанию работать с этими наборами?В сущности, каждый эмулирует тот же шаблон, что и упомянутые функции, но чисто принципиально, выполнимо ли это и как оно может стоить?