From 47e95cbf4a3e3112f6c393161039d8871c5e7b1e Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Sun, 3 Apr 2011 11:34:07 -0700 Subject: [PATCH] iocp-links: clean up introduction --- iocp-links.html | 35 +++++++++++++---------------------- 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/iocp-links.html b/iocp-links.html index c2d828e9f..d93f65374 100644 --- a/iocp-links.html +++ b/iocp-links.html @@ -45,35 +45,26 @@

This document assumes you are familiar with how non-blocking socket I/O is done in Unix. -

Windows presents asynchronous and non-blocking I/O differently than in Unix. -The syscall -select() - is available in Windows. -select processing is O(n) in the number of file descriptors -unlike the modern constant-time multiplexers like epoll which makes it +

The syscall +select + is available in Windows +but select processing is O(n) in the number of file descriptors +unlike the modern constant-time multiplexers like epoll which makes select unacceptable for high-concurrency servers. +This document will describe how high-concurrency programs are +designed in Windows.

-Windows has another way of polling called +Instead of epoll +or +kqueue, +Windows has its own I/O multiplexer called I/O completion ports (IOCPs). IOCPs are the objects used to poll overlapped I/O for completion. IOCP polling is constant time (REF?). -They are similar to the Unix I/O multiplexers -

+ +

The fundamental variation is that in a Unix you generally ask the kernel to wait for state change in a file descriptor's readability or writablity. With overlapped I/O and IOCPs the programmers waits for asynchronous function