@john-lee
2021-01-03T03:45:20.000000Z
字数 1204
阅读 923
Boost.Asio
io_context
构造函数允许程序指定并发提示。这是对io_context
实现的一个建议,即应该使用多少活动线程来运行完成处理程序。
当Windows I/O完成端口后端正在使用时,此值将传递给CreateIoCompletionPort
。
使用基于反应器的后端时,实现会识别以下特殊的并发提示值:
值 | 描述 |
1 | 实现假定io_context 将从单个线程运行,并基于此假设应用若干优化。例如,当从另一个处理程序中发布处理程序时,新处理程序将添加到快速线程本地队列中(结果新处理程序被推迟到当前执行处理程序完成)。 |
BOOST_ASIO_CONCURRENCY_HINT_UNSAFE |
此特殊并发提示将禁用调度程序和反应器 I/O 中的锁定。此提示具有以下限制:
|
BOOST_ASIO_CONCURRENCY_HINT_UNSAFE_IO | 此特殊并发提示禁用反应器 I/O 中的锁定。此提示具有以下限制:
|
BOOST_ASIO_CONCURRENCY_HINT_SAFE | 默认值。io_context 提供了完整的线程安全性,可以从任何线程使用不同的 I/O 对象。 |
通过定义BOOST_ASIO_CONCURRENCY_HINT_DEFAULT
宏,可以在编译时重写由默认构造的io_context
对象使用的并发提示。例如,指定
-DBOOST_ASIO_CONCURRENCY_HINT_DEFAULT=1
在编译器命令行上,表示对程序中所有默认构造的io_context
对象使用1的并发提示。类似地,可以通过定义BOOST_ASIO_CONCURRENCY_HINT_1
来覆盖用1构造的io_context
对象使用的并发提示。例如,传递
-DBOOST_ASIO_CONCURRENCY_HINT_1=BOOST_ASIO_CONCURRENCY_HINT_UNSAFE
编译器将禁用所有这些对象的线程安全性。
Copyright © 2003-2020 Christopher M. Kohlhoff
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)