Существует ли какой-либо масштабируемый Win32 API (например, IOCP, а не select), который дает вам стиль реактора
операции над сокетами? AFAIK IOCP позволяет получать уведомления о выполненных операциях
как чтение или запись данных (proactor), но я ищу реакторный стиль операций: I
необходимо получить уведомление, когда сокет доступен для чтения или записи (реактор).
Что-то похожее на epoll, kqueue, /dev/poll
?
Есть ли такой API в Win32? Если так, где я могу найти руководство по нему?
** Уточнение: ** Мне нужно select
как API для сокетов, которые можно масштабировать так же, как IOCP, или я ищу способ использования IOCP в реакторных процессах.
Еще больше уточнений: IOCP позволяет получать уведомления о завершении данной операции. Например:
WSARecv(buffer,...); // start reading
WSAWaitForMultipleEvents(...); // wait when read is done
Итак, я получаю уведомление после того, как операция завершена - операции в стиле проктора.
Мне нужно что-то вроде этого:
WSARecv( NOTHING ); // start waiting for readability (not actual read)
WSAWaitForMultipleEvents(...); // wait until read would not block
// Now WSARecv would not block
WSARecv(buffer,...); // now actual non-blocking read
Как я могу это сделать?