当使用boost :: asio进行一些异步TCP通信时,我注意到它启动了很多(3-4)内部线程。在the documentation阅读,它说boost :: asio内部线程
"The implementation of this library for a particular platform may
make use of one or more internal threads to emulate asynchronicity"
现在我的lib有着严格的要求,以不启动任何额外的线程(除了由客户提供的,现在它也开始io_service::run()
一个)。有没有什么办法可以停止boost :: asio来创建这些额外的线程?
另外,是否有任何其他的异步库,只能在一个线程中运行?
当定义了'BOOST_ASIO_DISABLE_THREADS'时,Asio在尝试产生一个线程时抛出'boost :: asio :: error :: operation_not_supported'错误。因此,唯一的选择是避免线程产卵操作。在大多数实现中,这可以通过使用'resolve()'而不是'async_resolve()'来完成。在Windows上,定义'BOOST_ASIO_DISABLE_IOCP'将导致Asio使用基于选择的实现,该实现比较慢,但不应该产生额外的线程。 – 2013-02-20 16:01:00
谢谢,实际上我根本没有找到这个文档。我将尝试使用DISABLE_IOCP – Rolle 2013-02-20 16:05:56