इस प्रश्न को एक साक्षात्कार में पूछा गया था। पहले भाग सिंगलटन वर्ग लिखा था:मल्टीथ्रेड के साथ सिंगलटन
class Singleton
{
static Singleton *singletonInstance;
Singleton() {}
public:
static Singleton* getSingletonInstance()
{
if(singletonInstance == null)
{
singletonInstance = new Singleton();
}
return singletonInstance;
}
};
तो मैं कैसे इस getSingletonInstance() एक बहु स्थिति में संभाल करने के लिए कहा गया था। मैं वास्तव में यकीन नहीं था, लेकिन मैं संशोधित रूप में:
class Singleton
{
static Singleton *singletonInstance;
Singleton() {}
static mutex m_;
public:
static Singleton* getSingletonInstance()
{
m_pend();
if(singletonInstance == null)
{
singletonInstance = new Singleton();
}
return singletonInstance;
}
static void releaseSingleton()
{
m_post();
}
};
तो मुझे बताया गया था कि हालांकि एक म्युटेक्स की आवश्यकता है, लंबित है और एक म्युटेक्स पोस्टिंग कुशल नहीं के रूप में यह समय लगता है। और इस स्थिति को संभालने का एक बेहतर तरीका है।
क्या कोई भी बहुसंख्यक परिस्थिति में सिंगलटन कक्षा को संभालने का एक बेहतर प्रभावी तरीका जानता है?
सिंगलटन का उपयोग न करें? –
मल्टीथ्रेड कोड में वैश्विक स्थिति का उपयोग अनंत सिरदर्द पाने का एक अच्छा तरीका है। संदेह तो stupidgleton के मामले में। –
@CatPlusPlus: यह सरल है। अनाड़ी। –