Friday 15 June 2012

c++ - Thread-safe Logger object using the singleton pattern -



c++ - Thread-safe Logger object using the singleton pattern -

i should implement logger application , should utilize singleton pattern. moreover, since application multithreaded, logger should thread-safe. point out have utilize c++03.

i've seen this implementation of singleton pattern in c++/qt using qmutex static object in order guarantee 1 thread allocates unique instance of singleton object.

why homecoming singleton pointer? homecoming reference, should not worry explicitly free memory used singleton object. read this answer , this other answer , wrote next implementation.

// ========== // logger.h #include <qmutex> #include <qstring> class logger { public: static logger& instance(); void configure(const qstring& folder); private: logger(); logger(const logger&); logger& operator=(const logger&); private: mutable qmutex _mutex; qstring _folder; }; // ========== // logger.cpp logger::logger() : _mutex() { ; } logger& logger::instance() { static qmutex mutex; mutex.lock(); static logger instance; mutex.unlock(); homecoming instance; } void logger::configure(const qstring& folder) { _mutex.lock(); _folder = folder; _mutex.unlock(); }

i have questions...

is function instance() thread-safe when unique instance created? at time of destruction of object, singleton object destroyed in thread-safe manner?

c++ multithreading qt thread-safety singleton

No comments:

Post a Comment