2017-06-02 52 views
0

我使用了一個具有單個get方法的類,該方法返回一個靜態本地庫。這在C++ 1中是線程安全的。當我將該類編譯爲靜態庫並在兩個不同的共享庫中使用此庫時:將這兩個共享庫與應用程序鏈接時,是否只有一個單例實例?是否只有一個C++ 11 singleton實例來自靜態庫

+1

我可以給出的最好的一般建議是:不要使用_Singleton Pattern_。 –

+1

我知道,但除了使用它在整個應用程序之間共享配置參數,而無需使用配置類初始化每個類之外,沒有別的辦法。 – Gustavo

+0

顛倒設計原則。不要從整個系統訪問配置參數,而是在創建時使用相關配置值對類進行配置。正確設計並實施_Factory Pattern_對此很有用。 –

回答

1

每個DLL都會在Windows中得到它自己的單身副本。我聽說在Linux中它有所不同,但我在那裏沒有直接的經驗。

當鏈接器被調用來創建共享庫時,它將從任何靜態庫中複製它需要的任何代碼 - 包括該代碼中定義的靜態變量。每個創建的共享庫都將獲得代碼和變量的不同副本。

相關問題