假設情景:一個人同時給多個人發檔案,要確認給每個人發完了之后洗掉檔案,但具體沒辦法知道誰先完成誰后完成,怎樣才能確保在任務的解構式里面把這個檔案洗掉掉【就每發一個檔案算一個任務,服務器要給多個客戶端發送檔案,創建的是同一個任務,只是地址不一樣,要任務都完成了才能銷毀檔案】
uj5u.com熱心網友回復:
是否可以考慮用個回呼函式,每個發送任務完成后呼叫回呼函式,回呼函式就累加被呼叫的次數,直到被呼叫的次數和發送的任務數相同(證明所有發送任務都完成),就可以洗掉檔案了。uj5u.com熱心網友回復:
這個題本意是考智能指標這一方面的
uj5u.com熱心網友回復:
累加的話用靜態變數也可以吧
uj5u.com熱心網友回復:
這種生存周期復雜的,一律用智能指標啊你都知道要考智能指標了,還有啥問題?
std::shared_ptr<CFile> f = std::make_shared<CFile>();
new SendTask(f);
new SendTask(f);
...
...
new SendTask(f);
所有task結束的時候,f自然就銷毀了。
uj5u.com熱心網友回復:
智能指標用的太少了 大佬有什么推薦的書嗎
uj5u.com熱心網友回復:

參考計數 搞定。
uj5u.com熱心網友回復:
AddRef and Release, Reference Counting轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/82099.html
標籤:C++ 語言
上一篇:VC如何實作漢字轉化成藏文
下一篇:求解答關于指標和malloc的題
