我正在审查Boost网站上的HTTP Server 3示例.
你能解释我为什么需要strand每个连接吗?正如我所看到的,我们read_some只在read-event的处理程序中调用.所以基本上read_some调用是顺序的,因此不需要strand(第3段的第2项说同样的事情).多线程环境中的风险在哪里?
在互联网上挖掘了几个小时,我找不到我的问题的答案。
我的模型是这样的:我有一个boost::asio::ssl::context用于创建实例的共享boost::asio::ssl::stream. 然后流对象被传递到不同的线程。
这个模型线程安全吗?是否可以boost::asio::ssl::context在构建将同时使用的不同 SSL 流对象时使用相同的内容?
请在将此问题标记为重复之前,仔细阅读说明。谢谢!
我的具体情况是,线程之间没有共享对象。所以Boost.Asio SSL 线程安全 线程安全中所说的任何内容都不会影响我的情况。我boost::asio::ssl::context从单个线程访问。
例如,我开发了电子邮件客户端。我知道某些服务器(例如imap.gmail.com)会缓存 SSL 会话。所以我想重用 SSL 会话(来自我这边的缓存)来减少服务器负载。
我使用boost::asio作为网络引擎。问题是: