- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在检查 1.66.0 版本中 boost::asio 的文档时,我注意到 io_context 构造函数提供了一个 concurrency_hint
。范围。阅读文档后,我不确定是否可以使用 BOOST_ASIO_CONCURRENCY_HINT_UNSAFE_IO
。
我有以下情况:
io_context
来执行 IO。 ioc.run()
从单线程执行。boost::asio::dispatch(ioc, ...)
在IO线程上执行代码。我想弄清楚 concurrency hint 是什么在上述情况下可以安全使用该值:
BOOST_ASIO_CONCURRENCY_HINT_SAFE
),但比使用提示慢。1
即可。BOOST_ASIO_CONCURRENCY_HINT_UNSAFE
是不行的,因为它不允许异步调用。我不清楚的是 BOOST_ASIO_CONCURRENCY_HINT_UNSAFE_IO
。文档说:
This special concurrency hint disables locking in the reactor I/O. This hint has the following restrictions:
— Care must be taken to ensure that run functions on the io_context, and all operations on the context's associated I/O objects (such as sockets and timers), occur in only one thread at a time.
我想知道在使用此并发提示时从另一个线程执行 boost::asio::dispatch
是否安全。
最佳答案
自 boost::asio::dispatch
¹ ends up calling io_context::dispatch
我会得出结论,如果您从另一个线程调用它,则使用 BOOST_ASIO_CONCURRENCY_HINT_UNSAFE_IO
是不行的:
— Care must be taken to ensure that run functions on the io_context, and all operations on the context's associated I/O objects (such as sockets and timers), occur in only one thread at a time.
¹ post/defer 相同
关于c++ - io_context 并发提示 (BOOST_ASIO_CONCURRENCY_HINT_UNSAFE_IO),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49266778/
在检查 1.66.0 版本中 boost::asio 的文档时,我注意到 io_context 构造函数提供了一个 concurrency_hint。范围。阅读文档后,我不确定是否可以使用 BOOST
我是一名优秀的程序员,十分优秀!