gpt4 book ai didi

c++ - boost::asio 内部线程

转载 作者:可可西里 更新时间:2023-11-01 02:32:29 27 4
gpt4 key购买 nike

当使用 boost::asio 进行一些异步 TCP 通信时,我注意到它启动了很多 (3-4) 个内部线程。正在阅读the documentation , 它说

"The implementation of this library for a particular platform may 
make use of one or more internal threads to emulate asynchronicity"

现在我的库有非常严格的要求,不能启动任何额外的线程(客户端提供的线程除外,它现在启动 io_service::run())。有什么方法可以阻止 boost::asio 创建这些额外的线程吗?

或者,是否有任何其他只能在一个线程中运行的异步库?

最佳答案

您可以通过在适当的翻译单元中定义 BOOST_ASIO_DISABLE_THREADS 来禁用模拟异步操作支持。 The documentation关于定义有这个说法吗

Explicitly disables Boost.Asio's threading support, independent of whether or not Boost as a whole supports threads.

如果您没有找到 platform specific implementation notes , 它清楚地说明了哪些操作使用此仿真。例如,我知道几乎每个平台上的 async_resolve() 都是以这种方式模拟的,线程是在第一次调用 async_resolve() 时创建的。一些(全部?)Windows 平台模拟其他几种操作,例如 deadline_timer 操作。

禁用线程支持的一种替代方法可能是避免这些模拟操作。我个人没有在项目中使用过 BOOST_ASIO_DISABLE_THREADS,所以我不确定它是否有其他副作用。

关于c++ - boost::asio 内部线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14981291/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com