在连接对象中boost asio HTTP 服务器示例 http://www.boost.org/doc/libs/1_57_0/doc/html/boost_asio/example/cpp11/http/server/connection.cpp在方法中do_read
and do_write
the shared_from_this()
被捕获是为了解决连接对象的生命周期问题,正如之前所回答的 https://stackoverflow.com/a/19368188/836097。目前还不清楚为什么第 67 行和第 88 行代码会调用shared_from_this()
再次,而不是使用self
:
40 auto self(shared_from_this());
41 socket_.async_read_some(boost::asio::buffer(buffer_),
42 [this, self](boost::system::error_code ec, std::size_t bytes_transferred)
43 {
....
67 connection_manager_.stop(shared_from_this());
```
没有任何实际原因(我猜这只是旧的 C++03 示例的剩余部分,已重构为 C++11 样式)。使用self
会更好,因为无论如何它已经被捕获了。
我能想到的唯一“教育”原因可能是证明明确捕获的self
存储在 lambda 中,即使它没有被使用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)