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 -
select(),
- which is available everywhere.
-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