Мое графическое представление и интерпретация моделей на основе сокетов

http://img600.imageshack.us/img600/3567/graphicrepresentation.png

Я правильно рассуждаю? Если да, может кто-нибудь показать мне, как на схеме выше, как будут работать порты завершения ввода / вывода? Прежде чем я начну изучать создание высокопроизводительных серверов, таких как серверы для MMORPG, я хочу точно знать, как все это работает.

2 ответа

Решение

С IOCP все ваши вызовы send и recv обрабатываются пулом потоков (обычно небольшой пул), поэтому нарисуйте один прямоугольник с send / recv в нем, над ним должны быть 3 красные точки и 10000 синих под ним.

С IOCP вы выдаете серию перекрывающихся запросов. После выполнения этих запросов они помещаются в очередь (IOCP), и потоки, обслуживающие эту очередь, могут удалять их и обрабатывать их. Таким образом, если у вас есть 10000 подключений, все из которых ожидают одно чтение, тогда, когда данные поступают от каждого клиента, вы получите завершения чтения, поступающие в IOCP. Ваши потоки будут разбужены и будут иметь дело с завершениями, они, скорее всего, будут производить больше перекрывающихся операций чтения и, вероятно, также будут создавать перекрывающиеся записи. Большую часть времени вас не волнует, когда перекрывающиеся записи завершены (за исключением случаев, когда вы заботитесь о них;)), и поэтому обработка завершения просто состоит из освобождения данных за операцию (то есть данных, которые вы только что отправили клиенту) и уменьшения использования рассчитывать на соединение...

Статьи, ссылки на которые есть на моей бесплатной странице инфраструктуры IOCP-сервера, объясняют это немного подробнее.

Другие вопросы по тегам