可以在多个SSL流之间共享boost :: asio :: ssl :: context吗?
问题描述:
在互联网上搜索几个小时我无法找到我的问题的答案。可以在多个SSL流之间共享boost :: asio :: ssl :: context吗?
我的模型是这样的:我有一个共享boost::asio::ssl::context
被用来创建boost::asio::ssl::stream
的实例。然后将流对象传递给不同的线程。
此模型线程安全吗?可以使用相同的boost::asio::ssl::context
构建将同时使用的不同SSL流对象吗?
请将,在将此问题标记为重复之前,请仔细阅读说明。谢谢!
我的具体情况是,没有任何对象是共享的线程。所以说Boost.Asio SSL thread safety线程安全中的任何内容都不会影响我的情况。我从一个线程访问boost::asio::ssl::context
。
答
由于SSL上下文需要在SSL会话之间共享(否则,会话恢复如何工作),SSL上下文类是完全内部线程安全的。不过,您可以在多个SSL连接中使用SSL上下文,但可以使用多个线程中的SSL上下文。
但不要忘记正确初始化libssl! –
非常感谢您的帮助!这是我需要的主张。直觉上我虽然这应该是可能的,它的工作原理。但是,当某些事情发挥作用时,并不意味着它是正确的,并可能在另一台机器上发生故障 – GreenScape
@RichardHodges我相信'boost'应该在内部初始化它的SSL后端。就我所知,它是这样做的。 – GreenScape