0
在POCO框架中,SingletonHodler是用於管理sigleton對象的模板類。其獲得的單獨的對象的方法是:線程安全SingletonHolder性能?
S* get()
/// Returns a pointer to the singleton object
/// hold by the SingletonHolder. The first call
/// to get will create the singleton.
{
FastMutex::ScopedLock lock(_m);
if (!_pS) _pS = new S;
return _pS;
}
的問題是此方法始終使用互斥,以確保不存在在多線程環境中創建多於一個單獨的對象。我認爲第一次同步所調用的方法是合適的。如果我們之後進行同步,它會浪費資源。我知道Double check locking可以解決這個問題,但它可能是broken。
我的問題是POCO寧願確保多線程環境中的安全性而不是節省資源?
不要使用單身人士,你永遠不會有任何單身人士相關的問題。 – rightfold
有關某個構造的性能的任何問題都應該回答「您是否測量過您的用例?」。你有嗎? – EricSchaefer