【发布时间】:2020-10-18 09:48:14
【问题描述】:
当我在这里阅读 cppreference 中的文档时 https://en.cppreference.com/w/cpp/memory/shared_ptr#Example
我想知道打印出来的第一个lp.use_count() 的可能值是多少?我在输出内容中用“
#include#include #include #include #include 结构基础 { Base() { std::cout p) { std::this_thread::sleep_for(std::chrono::seconds(1)); std::shared_ptr lp = p; // 线程安全的,即使 // 共享 use_count 递增 { 静态 std::mutex io_mutex; std::lock_guard<:mutex> lk(io_mutex); std::cout p = std::make_shared (); std::cout 可能的输出:
Base::Base() Derived::Derived() Created a shared Derived (as a pointer to Base) p.get() = 0x2299b30, p.use_count() = 1 Shared ownership between 3 threads and released ownership from main: p.get() = 0, p.use_count() = 0 local pointer in a thread: lp.get() = 0x2299b30, lp.use_count() = 5 <<<<<<<< HERE <<<<<< local pointer in a thread: lp.get() = 0x2299b30, lp.use_count() = 3 local pointer in a thread: lp.get() = 0x2299b30, lp.use_count() = 2 Derived::~Derived() Base::~Base() All threads completed, the last one deleted Derived
@user2452809 的回答非常感谢,指出了
use_count()的一个重要特点。假设
use_count()会返回一个准确的计数,答案是什么?
【问题讨论】:
标签: c++ multithreading