與Boost.Asio最近玩了很多。我非常喜歡這個庫,因爲它提供了一種極好的方式來擠出當今多核系統的性能。使用Boost.Asio時確保有效物體使用壽命的最佳方法是什麼?
一個問題,我問了自己幾次,我認爲在與Asio進行異步調用時,值得關注對象的壽命/所有權。
我一再重複討論的問題是,你經常需要「過期」一個仍然有異步回調的對象。如果該對象在調用回調之前超出範圍,事情將不可避免地發生。
爲了解決這個問題,我採用了boost::enable_shared_from_this
模板作爲大多數基於asio的類的基類。這工作正常,但有點麻煩:通常這也意味着保護構造函數並向類中添加工廠方法,以確保所有實例都在shared_ptr內創建。
我只是想知道別人怎麼解決這個問題。我是否正在討論這個最好的方法?還是讓我的Asio.Foo都錯了?
討論... :)
有意思的是你提到了這種情況:我的同事(在這裏稱爲艾倫)和你一樣做了同樣的事情,我提到了我找到的「解決方案」,因爲對我來說這是同樣的問題。 雖然我仍然不滿意:我不喜歡缺乏決定論,但是,那對於雅 – jkp 2009-01-08 19:54:57