【发布时间】:2016-05-09 06:39:10
【问题描述】:
我对异步编程不是很熟悉,我有一个问题。
我的问题如下。鉴于 boost.asio 中 C++11 的 echo_server 示例:http://www.boost.org/doc/libs/1_60_0/doc/html/boost_asio/example/cpp11/spawn/echo_server.cpp
我想知道 std::make_shared<session> 在 C++14 中是否可以在 C++14 中替换为 std::unique_ptr<session>,从而避免引用计数的开销。
我不确定,因为我们有 shared_from_this(),但没有 unique_from_this() 这样的东西,那么我如何从 this 内部访问 unique_ptr<session>?。
【问题讨论】:
-
您知道开销是每个实例的额外内存的单个指针以及共享 ptr 创建和删除时的引用计数增加——否则它与普通指针完全相同。此外,不清楚您指的是哪个 shared_ptr,因为该示例中有多个。
-
“unique_from_this”的概念甚至没有意义。你不能简单地任意创建一个指向内存地址的唯一指针,因为你会有一个关于谁清理内存的竞争条件。
标签: c++ asynchronous boost boost-asio asyncsocket