我想知道參考計數是否shared_ptr變為1. 換句話說,我想觀察shared_ptr。它讓我想起了觀察者模式。整個情況是應用程式中有多個執行緒請求記錄器實體。當每個執行緒完成其作業時,它會釋放其實體shared_ptr。因此,一旦所有執行緒都完成,就會留下一個物件實體和一個對該物件的參考 - shared_ptr。問題是如何擺脫它。這里呈現了明顯的解決方案:垃圾收集器每 5 分鐘運行一次......
uj5u.com熱心網友回復:
因此,一旦所有的執行緒都完成了,就剩下一個物件實體和一個對該物件的參考——shared_ptr。問題是如何擺脫它。
首先不要創建指向物件的額外共享指標。
uj5u.com熱心網友回復:
您可以在 C 20中使用std::shared_ptr::use_count或std::shared_ptr::unique :
#include <iostream>
#include <memory>
int main( )
{
auto sptr { std::make_shared<double>( 10.0 ) };
std::cout << "use count == " << sptr.use_count( )
<< " --- is unique? " << std::boolalpha << sptr.unique( ) << std::noboolalpha << '\n';
auto sptr2 { sptr };
std::cout << "use count == " << sptr2.use_count( )
<< " --- is unique? " << std::boolalpha << sptr2.unique( ) << '\n';
}
樣本輸出:
use count == 1 --- is unique? true
use count == 2 --- is unique? false
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/412639.html
標籤:
