假设我的应用程序使用的库对象Server
具有一个回调onConnected
,它在与客户端建立新连接时传递对Connection
对象的引用; Server
保留Connection
的所有权。我想在关闭时(本地或远程)销毁Connection
,但我不确定如何最好地处理通知正在使用连接的应用程序。销毁其他人参考的对象
显而易见的解决办法是立即有某种onDisconnected
回调,要么delete
它允许应用程序,如果它试图继续使用它,或者把它作为shared_ptr
,只是让对象徘徊,直到应用程序清除它崩溃向上。这两种方法对我都不是特别好。前者只是感觉不安全,后者混淆谁拥有连接的概念,并且如果应用程序忽略回调则可能泄漏。
有没有一些这种我失踪的习惯解决方案,或者只是一个更好的方法呢?
我正在开发两者。它已经在生产中,我只是想着我可以改进它的方式。您对操作系统的操作方式做了一个很好的说明。它仍然是一种共享所有权,但可能比仅使用shared_ptr更好一些。我想这是非常不可避免的。 – spencercw 2012-07-24 08:43:56