IOCP = "Порт завершения ввода-вывода". Это объект ядра, встроенный в ОС Windows, который дает вам интеллектуальный способ управления многопоточным асинхронным вводом-выводом.
В очень упрощенном (и немного упрощенном) виде вы рассказываете IOCP о тех операциях ввода-вывода, которые вы хотите выполнить. Он будет выполнять их асинхронно и поддерживать очередь результатов каждого из этих заданий. Ваш звонок, чтобы сообщить IOCP о задании, немедленно возвращается (он не блокируется, пока происходит IO). Вам возвращается объект, который концептуально похож на .NET IAsyncResult ... он позволяет блокировать, если вы решите, или вы можете предоставить обратный вызов, или вы можете периодически опрашивать, чтобы увидеть, завершено ли задание.
При выполнении этих работ IOCP использует пул потоков. Пул потоков пытается ограничить количество потоков количеством процессоров или меньше (это настраивается, но намерение и значение по умолчанию - ограничить его количеством процессоров). Однако в IOCP предусмотрено, что иногда задачи в этих потоках могут блокироваться. Задачи Asycn IO не будут блокироваться, но вы, возможно, предоставили это как-то иначе. Таким образом, вы можете присвоить IOCP другое число ... это число потоков выше «обычного максимума», до которого IOCP разрешено подниматься из-за блокировки одного из других потоков. Цель состоит в том, чтобы иметь до «обычного максимума» потоков, которые действительно что-то делают (то есть не блокируются). Если это произойдет, то какое-то время IOCP будет использовать больше потоков, чем обычный максимум, но будет отказываться создавать новые потоки, пока не сможет вернуться к «обычному максимуму».
Это краткое резюме, только концептуальное и, как я уже сказал, в некоторых отношениях слишком упрощенное. Но это должно дать вам общее представление. В книгах Джеффри Рихтера по ОС Windows это подробно освещено (но эти книги уже не издаются). Вы можете найти эти книги в употреблении, и они на самом деле стоят дороже, чем они изначально. Я думаю, что «Advanced Windows» - это название, которое вам нужно, но, возможно, была обновленная версия книги с другим названием.