implementation.qbk
来自「Boost provides free peer-reviewed portab」· QBK 代码 · 共 260 行
QBK
260 行
[/ / Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com) / / Distributed under the Boost Software License, Version 1.0. (See accompanying / file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) /][section:implementation Platform-Specific Implementation Notes]This section lists platform-specific implementation details, such as thedefault demultiplexing mechanism, the number of threads created internally, andwhen threads are created.[heading Linux Kernel 2.4]Demultiplexing mechanism:* Uses `select` for demultiplexing. This means that the number of filedescriptors in the process cannot be permitted to exceed `FD_SETSIZE`.Threads:* Demultiplexing using `select` is performed in one of the threads that calls`io_service::run()`, `io_service::run_one()`, `io_service::poll()` or`io_service::poll_one()`.* An additional thread per `io_service` is used to emulate asynchronous hostresolution. This thread is created on the first call to either`ip::tcp::resolver::async_resolve()` or `ip::udp::resolver::async_resolve()`.Scatter-Gather:* At most `min(64,IOV_MAX)` buffers may be transferred in a single operation.[heading Linux Kernel 2.6]Demultiplexing mechanism:* Uses `epoll` for demultiplexing.Threads:* Demultiplexing using `epoll` is performed in one of the threads that calls`io_service::run()`, `io_service::run_one()`, `io_service::poll()` or`io_service::poll_one()`.* An additional thread per `io_service` is used to emulate asynchronous hostresolution. This thread is created on the first call to either`ip::tcp::resolver::async_resolve()` or `ip::udp::resolver::async_resolve()`.Scatter-Gather:* At most `min(64,IOV_MAX)` buffers may be transferred in a single operation.[heading Solaris]Demultiplexing mechanism:* Uses [^/dev/poll] for demultiplexing.Threads:* Demultiplexing using [^/dev/poll] is performed in one of the threads thatcalls `io_service::run()`, `io_service::run_one()`, `io_service::poll()` or`io_service::poll_one()`.* An additional thread per `io_service` is used to emulate asynchronous hostresolution. This thread is created on the first call to either`ip::tcp::resolver::async_resolve()` or `ip::udp::resolver::async_resolve()`.Scatter-Gather:* At most `min(64,IOV_MAX)` buffers may be transferred in a single operation.[heading QNX Neutrino]Demultiplexing mechanism:* Uses `select` for demultiplexing. This means that the number of filedescriptors in the process cannot be permitted to exceed `FD_SETSIZE`.Threads:* Demultiplexing using `select` is performed in one of the threads that calls`io_service::run()`, `io_service::run_one()`, `io_service::poll()` or`io_service::poll_one()`.* An additional thread per `io_service` is used to emulate asynchronous hostresolution. This thread is created on the first call to either`ip::tcp::resolver::async_resolve()` or `ip::udp::resolver::async_resolve()`.Scatter-Gather:* At most `min(64,IOV_MAX)` buffers may be transferred in a single operation.[heading Mac OS X]Demultiplexing mechanism:* Uses `kqueue` for demultiplexing.Threads:* Demultiplexing using `kqueue` is performed in one of the threads that calls`io_service::run()`, `io_service::run_one()`, `io_service::poll()` or`io_service::poll_one()`.* An additional thread per `io_service` is used to emulate asynchronous hostresolution. This thread is created on the first call to either`ip::tcp::resolver::async_resolve()` or `ip::udp::resolver::async_resolve()`.Scatter-Gather:* At most `min(64,IOV_MAX)` buffers may be transferred in a single operation.[heading FreeBSD]Demultiplexing mechanism:* Uses `kqueue` for demultiplexing.Threads:* Demultiplexing using `kqueue` is performed in one of the threads that calls`io_service::run()`, `io_service::run_one()`, `io_service::poll()` or`io_service::poll_one()`.* An additional thread per `io_service` is used to emulate asynchronous hostresolution. This thread is created on the first call to either`ip::tcp::resolver::async_resolve()` or `ip::udp::resolver::async_resolve()`.Scatter-Gather:* At most `min(64,IOV_MAX)` buffers may be transferred in a single operation.[heading AIX]Demultiplexing mechanism:* Uses `select` for demultiplexing. This means that the number of filedescriptors in the process cannot be permitted to exceed `FD_SETSIZE`.Threads:* Demultiplexing using `select` is performed in one of the threads that calls`io_service::run()`, `io_service::run_one()`, `io_service::poll()` or`io_service::poll_one()`.* An additional thread per `io_service` is used to emulate asynchronous hostresolution. This thread is created on the first call to either`ip::tcp::resolver::async_resolve()` or `ip::udp::resolver::async_resolve()`.Scatter-Gather:* At most `min(64,IOV_MAX)` buffers may be transferred in a single operation.[heading HP-UX]Demultiplexing mechanism:* Uses `select` for demultiplexing. This means that the number of filedescriptors in the process cannot be permitted to exceed `FD_SETSIZE`.Threads:* Demultiplexing using `select` is performed in one of the threads that calls`io_service::run()`, `io_service::run_one()`, `io_service::poll()` or`io_service::poll_one()`.* An additional thread per `io_service` is used to emulate asynchronous hostresolution. This thread is created on the first call to either`ip::tcp::resolver::async_resolve()` or `ip::udp::resolver::async_resolve()`.Scatter-Gather:* At most `min(64,IOV_MAX)` buffers may be transferred in a single operation.[heading Tru64]Demultiplexing mechanism:* Uses `select` for demultiplexing. This means that the number of filedescriptors in the process cannot be permitted to exceed `FD_SETSIZE`.Threads:* Demultiplexing using `select` is performed in one of the threads that calls`io_service::run()`, `io_service::run_one()`, `io_service::poll()` or`io_service::poll_one()`.* An additional thread per `io_service` is used to emulate asynchronous hostresolution. This thread is created on the first call to either`ip::tcp::resolver::async_resolve()` or `ip::udp::resolver::async_resolve()`.Scatter-Gather:* At most `min(64,IOV_MAX)` buffers may be transferred in a single operation.[heading Windows 95, 98 and Me]Demultiplexing mechanism:* Uses `select` for demultiplexing.Threads:* Demultiplexing using `select` is performed in one of the threads that calls`io_service::run()`, `io_service::run_one()`, `io_service::poll()` or`io_service::poll_one()`.* An additional thread per `io_service` is used to emulate asynchronous hostresolution. This thread is created on the first call to either`ip::tcp::resolver::async_resolve()` or `ip::udp::resolver::async_resolve()`.Scatter-Gather:* For sockets, at most 16 buffers may be transferred in a single operation.[heading Windows NT, 2000, XP, 2003 and Vista]Demultiplexing mechanism:* Uses overlapped I/O and I/O completion ports for all asynchronous socketoperations except for asynchronous connect.* Uses `select` for emulating asynchronous connect.Threads:* Demultiplexing using I/O completion ports is performed in all threads that call`io_service::run()`, `io_service::run_one()`, `io_service::poll()` or`io_service::poll_one()`.* An additional thread per `io_service` is used for the `select`demultiplexing. This thread is created on the first call to `async_connect()`.* An additional thread per `io_service` is used to emulate asynchronous hostresolution. This thread is created on the first call to either`ip::tcp::resolver::async_resolve()` or `ip::udp::resolver::async_resolve()`.Scatter-Gather:* For sockets, at most 64 buffers may be transferred in a single operation.* For stream-oriented handles, only one buffer may be transferred in a singleoperation.[endsect]
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?