Free C++ class library of cryptographic schemes
Restricts the instantiation of a class to one static object without locks. More...
|Singleton (F objectFactory=F())|
|const T &||Ref (...) const|
|Return a reference to the inner Singleton object. More...|
Restricts the instantiation of a class to one static object without locks.
|T||the class or type|
|F||the object factory for T|
|instance||the initiali instance count|
This class safely initializes a static object in a multithreaded environment. For C++03 and below it will do so without using locks for portability. If two threads call Ref() at the same time, they may get back different references, and one object may end up being memory leaked. This is by design and it avoids a subltle initialization problem ina multithreaded environment with thread local storage on early Windows platforms, like Windows XP and Windows 2003.
For C++11 and above, a standard double-checked locking pattern with thread fences are used. The locks and fences are standard and do not hinder portability.
|const T & Singleton< T, F, instance >::Ref||(||...||)||const|