我正在检查有关 Asio 的文档,准确地说是 SSL 部分并遇到
了线程安全声明:
现在我明白 OpenSSL BIO 不允许并发和操作,但我无法找到哪些函数专门用于.ssl::stream
Shared objects: Unsafe. The application must also ensure that all asynchronous operations are performed within the same implicit or explicit strand.
SSL_Read
SSL_Write
strand
- 因为使用
strand.post(async_read)
/strand.post(async_write)
不应该(据我所知)确保并发SSL_Read
并且SSL_Write
不会发生,因为即使这些异步函数不会立即执行,它们也会立即返回,因此不会读取任何数据。 - 也使用
strand
on 处理程序函数(对我来说)似乎也没有什么好处,因为当这些处理程序被调用时,数据已经被读取并复制到用户定义的缓冲区中。
谢谢