Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Platform-Specific Implementation Notes

Boost , Boost.Asio , Overview

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

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

Linux Kernel 2.4

Демультиплексирующий механизм:

  • Используется<select>для демультиплексирования. Это означает, что количество файловых дескрипторов в процессе не может превышать<FD_SETSIZE>.

Нити:

  • Демультиплексирование с использованием<select>выполняется в одной из ниток, которая вызывает<io_service::run()>,<io_service::run_one()>,<io_service::poll()>или<io_service::poll_one()>.
  • Дополнительный поток на<io_service>используется для эмуляции асинхронного разрешения хоста. Эта нить создается по первому призыву либо<ip::tcp::resolver::async_resolve()>, либо<ip::udp::resolver::async_resolve()>.

Скэттер-Гейзер:

  • В большинстве случаев<min(64,IOV_MAX)>буферы могут быть переданы в одной операции.
Linux Kernel 2.6

Демультиплексирующий механизм:

  • Применяется<epoll>для демультиплексирования.

Нити:

  • Демультиплексирование с использованием<epoll>выполняется в одной из нитей, которая вызывает<io_service::run()>,<io_service::run_one()>,<io_service::poll()>или<io_service::poll_one()>.
  • Дополнительный поток на<io_service>используется для эмуляции асинхронного разрешения хоста. Эта нить создается по первому призыву либо<ip::tcp::resolver::async_resolve()>, либо<ip::udp::resolver::async_resolve()>.

Скэттер-Гейзер:

  • В большинстве случаев<min(64,IOV_MAX)>буферы могут быть переданы в одной операции.
Solaris

Демультиплексирующий механизм:

  • Применяется</dev/poll>для демультиплексирования.

Нити:

  • Демультиплексирование с использованием</dev/poll>выполняется в одной из нитей, которая вызывает<io_service::run()>,<io_service::run_one()>,<io_service::poll()>или<io_service::poll_one()>.
  • Дополнительный поток на<io_service>используется для эмуляции асинхронного разрешения хоста. Эта нить создается по первому призыву либо<ip::tcp::resolver::async_resolve()>, либо<ip::udp::resolver::async_resolve()>.

Скэттер-Гейзер:

  • В большинстве случаев<min(64,IOV_MAX)>буферы могут быть переданы в одной операции.
QNX Neutrino

Демультиплексирующий механизм:

  • Используется<select>для демультиплексирования. Это означает, что количество файловых дескрипторов в процессе не может превышать<FD_SETSIZE>.

Нити:

  • Демультиплексирование с использованием<select>выполняется в одной из ниток, которая вызывает<io_service::run()>,<io_service::run_one()>,<io_service::poll()>или<io_service::poll_one()>.
  • Дополнительный поток на<io_service>используется для эмуляции асинхронного разрешения хоста. Эта нить создается по первому призыву либо<ip::tcp::resolver::async_resolve()>, либо<ip::udp::resolver::async_resolve()>.

Скэттер-Гейзер:

  • В большинстве случаев<min(64,IOV_MAX)>буферы могут быть переданы в одной операции.
Mac OS X

Демультиплексирующий механизм:

  • Используется<kqueue>для демультиплексирования.

Нити:

  • Демультиплексирование с использованием<kqueue>выполняется в одной из ниток, которая вызывает<io_service::run()>,<io_service::run_one()>,<io_service::poll()>или<io_service::poll_one()>.
  • Дополнительный поток на<io_service>используется для эмуляции асинхронного разрешения хоста. Эта нить создается по первому призыву либо<ip::tcp::resolver::async_resolve()>, либо<ip::udp::resolver::async_resolve()>.

Скэттер-Гейзер:

  • В большинстве случаев<min(64,IOV_MAX)>буферы могут быть переданы в одной операции.
FreeBSD

Демультиплексирующий механизм:

  • Используется<kqueue>для демультиплексирования.

Нити:

  • Демультиплексирование с использованием<kqueue>выполняется в одной из ниток, которая вызывает<io_service::run()>,<io_service::run_one()>,<io_service::poll()>или<io_service::poll_one()>.
  • Дополнительный поток на<io_service>используется для эмуляции асинхронного разрешения хоста. Эта нить создается по первому призыву либо<ip::tcp::resolver::async_resolve()>, либо<ip::udp::resolver::async_resolve()>.

Скэттер-Гейзер:

  • В большинстве случаев<min(64,IOV_MAX)>буферы могут быть переданы в одной операции.
AIX

Демультиплексирующий механизм:

  • Используется<select>для демультиплексирования. Это означает, что количество файловых дескрипторов в процессе не может превышать<FD_SETSIZE>.

Нити:

  • Демультиплексирование с использованием<select>выполняется в одной из ниток, которая вызывает<io_service::run()>,<io_service::run_one()>,<io_service::poll()>или<io_service::poll_one()>.
  • Дополнительный поток на<io_service>используется для эмуляции асинхронного разрешения хоста. Эта нить создается по первому призыву либо<ip::tcp::resolver::async_resolve()>, либо<ip::udp::resolver::async_resolve()>.

Скэттер-Гейзер:

  • В большинстве случаев<min(64,IOV_MAX)>буферы могут быть переданы в одной операции.
HP-UX

Демультиплексирующий механизм:

  • Используется<select>для демультиплексирования. Это означает, что количество файловых дескрипторов в процессе не может превышать<FD_SETSIZE>.

Нити:

  • Демультиплексирование с использованием<select>выполняется в одной из ниток, которая вызывает<io_service::run()>,<io_service::run_one()>,<io_service::poll()>или<io_service::poll_one()>.
  • Дополнительный поток на<io_service>используется для эмуляции асинхронного разрешения хоста. Эта нить создается по первому призыву либо<ip::tcp::resolver::async_resolve()>, либо<ip::udp::resolver::async_resolve()>.

Скэттер-Гейзер:

  • В большинстве случаев<min(64,IOV_MAX)>буферы могут быть переданы в одной операции.
Tru64

Демультиплексирующий механизм:

  • Используется<select>для демультиплексирования. Это означает, что количество файловых дескрипторов в процессе не может превышать<FD_SETSIZE>.

Нити:

  • Демультиплексирование с использованием<select>выполняется в одной из ниток, которая вызывает<io_service::run()>,<io_service::run_one()>,<io_service::poll()>или<io_service::poll_one()>.
  • Дополнительный поток на<io_service>используется для эмуляции асинхронного разрешения хоста. Эта нить создается по первому призыву либо<ip::tcp::resolver::async_resolve()>, либо<ip::udp::resolver::async_resolve()>.

Скэттер-Гейзер:

  • В большинстве случаев<min(64,IOV_MAX)>буферы могут быть переданы в одной операции.
Windows 95, 98 and Me

Демультиплексирующий механизм:

  • Используется<select>для демультиплексирования.

Нити:

  • Демультиплексирование с использованием<select>выполняется в одной из ниток, которая вызывает<io_service::run()>,<io_service::run_one()>,<io_service::poll()>или<io_service::poll_one()>.
  • Дополнительный поток на<io_service>используется для эмуляции асинхронного разрешения хоста. Эта нить создается по первому призыву либо<ip::tcp::resolver::async_resolve()>, либо<ip::udp::resolver::async_resolve()>.

Скэттер-Гейзер:

  • Для розеток в одной операции может быть передано не более 16 буферов.
Windows NT, 2000, XP, 2003, Vista, 7 and 8

Демультиплексирующий механизм:

  • Использует перекрывающиеся порты завершения ввода/вывода и ввода/вывода для всех асинхронных операций сокетов, за исключением асинхронного соединения.
  • Использует<select>для эмуляции асинхронного соединения.

Нити:

  • Демультиплексирование с использованием портов завершения ввода/вывода выполняется во всех потоках, которые вызывают<io_service::run()>,<io_service::run_one()>,<io_service::poll()>или<io_service::poll_one()>.
  • Дополнительный поток на<io_service>используется для запуска таймеров. Эта нить создается при строительстве первых<deadline_timer>или<deadline_timer_service>объектов.
  • Для демультиплексирования используется дополнительная нить<io_service>. Эта нить создана по первому призыву<async_connect()>.
  • Дополнительный поток на<io_service>используется для эмуляции асинхронного разрешения хоста. Эта нить создается по первому призыву либо<ip::tcp::resolver::async_resolve()>, либо<ip::udp::resolver::async_resolve()>.

Скэттер-Гейзер:

  • Для розеток не более 64 буферов могут быть переданы в одной операции.
  • Для ручек, ориентированных на поток, в одной операции может быть передан только один буфер.
Windows Runtime

Повышаю. Asio предоставляет ограниченную поддержку Windows Runtime. Для этого необходимо включить языковые расширения. Из-за ограниченных возможностей, предоставляемых Windows Runtime API, поддержка поставляется со следующими оговорками:

  • Основные средства, такие как<io_service>,<strand>, буферы, составные операции, таймеры и т.д., должны работать как обычно.
  • Для сокетов поддерживается только TCP на стороне клиента.
  • Явное связывание клиентского сокета TCP не поддерживается.
  • Функция<cancel()>не поддерживается для розеток. Асинхронные операции могут быть отменены только путем закрытия розетки.
  • Операции, использующие<null_buffers>, не поддерживаются.
  • Поддерживаются только<tcp::no_delay>и<socket_base::keep_alive>варианты.
  • Резолверы не поддерживают названия служб, только номера. То есть вы должны использовать «80», а не «http».
  • Большинство флагов запросов-решителей не имеют эффекта.

Демультиплексирующий механизм:

  • Использует класс<Windows::Networking::Sockets::StreamSocket>для реализации асинхронных операций сокетов TCP.

Нити:

  • Завершения событий доставляются в пул потоков Windows и размещаются в<io_service>для выполнения обработчика.
  • Для запуска таймеров используется дополнительный поток на<io_service>. Эта нить создается при строительстве объектов первого таймера.

Скэттер-Гейзер:

  • Для розеток максимум один буфер может быть передан в одной операции.

PrevUpHomeNext

Статья Platform-Specific Implementation Notes раздела Boost.Asio Overview может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Overview ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 21:50:12/0.011387825012207/1