1

我正在检查有关 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_ReadSSL_Writestrand

  • 因为使用strand.post(async_read)/strand.post(async_write)不应该(据我所知)确保并发SSL_Read并且SSL_Write不会发生,因为即使这些异步函数不会立即执行,它们也会立即返回,因此不会读取任何数据。
  • 也使用strandon 处理程序函数(对我来说)似乎也没有什么好处,因为当这些处理程序被调用时,数据已经被读取并复制到用户定义的缓冲区中。

谢谢

4

1 回答 1

1

好的,经过更多谷歌搜索后,我找到了我想要的东西。解决方案是在 HTTP Server 3 示例中,它在完成处理程序上使用 strand。即使我仍然不明白它有什么帮助,它确实可以防止并发 SSL 操作,因此不会使我的程序崩溃。

于 2013-03-06T13:28:28.340 回答