IOCP, кроссплатформенные библиотеки? - PullRequest
1 голос
/ 03 января 2009

Недавно я столкнулся с чем-то, называемым IOCP, на платформе Windows, если быть более точным: порты управления вводом / выводом. Похоже, это самый эффективный способ кодирования программного обеспечения вашего сервера, когда требуется одновременное удержание тысяч пользователей. (Поправьте меня, если я ошибаюсь, но обратные вызовы потоков на сокет, опрос и асинхронные вызовы (поток при каждом обратном вызове) недостаточно эффективны.)

Мне интересно, есть ли доступные сторонние библиотеки, которые реализуют эту концепцию. Я знаю, что Win32 API предоставляет нам CreateIoCompletionPort, FreeBSD имеет kqueue, и Linux в целом может использовать / dev / epoll, который работает примерно так же ... Но разве не существует кроссплатформенной библиотеки (такой как boost :: thread), которая обрабатывает эти вещи для меня?

Ответы [ 3 ]

5 голосов
/ 03 января 2009

Вы смотрели на boost :: asio? Я не уверен, что у него есть все эти функции, но я считаю, что это одна из вещей, для которой он предназначен.

2 голосов
/ 11 декабря 2012

Я знаю, что это поздний ответ на эту тему, но для тех, кто интересуется библиотекой x-платформы, поддерживающей асинхронный ввод-вывод как в Linux / UNIX, так и в Windows, вам может понадобиться libuv .

libuv изначально создавался как фундаментальная основа для node.js, но он превратился в мощную библиотеку абстракций для многих низкоуровневых задач x-платформы, включая асинхронный ввод-вывод, неблокирующую TCP сокеты и именованные каналы, UDP, таймеры, порождение дочерних процессов , высокое разрешение, планирование пула потоков и т. д.

1 голос
/ 12 декабря 2009

libevent работает на ряде * nix ОС, а также работает на Windows

...