multithreading - Asio SSL 流线程安全

标签 multithreading ssl thread-safety boost-asio

我正在检查关于 Asio 的文档,准确地说是 SSL 部分,然后遇到 ssl::stream
以及线程安全声明:
共享对象:不安全。应用程序还必须确保所有异步操作都在同一个隐式或显式链中执行。
现在我明白 OpenSSL BIO 不允许并发 SSL_ReadSSL_Write 操作,但我无法找到哪些函数专门用于 strand

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

谢谢

最佳答案

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

关于multithreading - Asio SSL 流线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15217555/

相关文章:

java - Java REST Web 服务中的线程

spring-boot - 如何配置 Zuul 网关(监听两个端口)以拒绝基于端口和 url 组合的请求?

c++ - 条件变量 - 等待/通知竞争条件

java - 如何启动获取文件锁并相互等待的并发线程

java - 了解 dagger2 ScopedProvider 中的延迟初始化单例,作者:Gregory Kick

multithreading - 为什么 Thread join() 在破坏线程即并发性的唯一目的时有用

Python - 多个同时线程池

android - 通过 http 安全 Android 服务器数据上传

git - 防火墙添加颁发者 - 无法识别对等证书颁发者

C# 4.0 : Are there ready-made, 线程安全的自动实现属性?