diff options
author | Chuck <chuck@borboggle.com> | 2013-10-01 17:23:17 +0700 |
---|---|---|
committer | Chuck <chuck@borboggle.com> | 2013-10-20 14:29:24 +0700 |
commit | 0b8f47dc531d3cbaf172a5e17f27524a40833dba (patch) | |
tree | eb88d649af3af86b65f914206dfe30ad06230d33 /src/allocators.cpp | |
parent | 896853a011f6681d41bc585e020d74a7f2fece88 (diff) |
Changing LockedPageManager to use a managed instance
This ensures the allocator is ready no matter when it's needed (as
some STL implementations allocate in constructors -- i.e., MSVC's STL
in debug builds).
Using boost::call_once to guarantee thread-safe static initialization.
Adding some comments describing why the change was made.
Addressing deinitialization of the LockedPageManager object
by initializing it in a local static initializer and adding
an assert in the base's destructor.
Diffstat (limited to 'src/allocators.cpp')
-rw-r--r-- | src/allocators.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/allocators.cpp b/src/allocators.cpp index b239b623d8..15f34aa2c8 100644 --- a/src/allocators.cpp +++ b/src/allocators.cpp @@ -24,6 +24,9 @@ #include <unistd.h> // for sysconf #endif +LockedPageManager* LockedPageManager::_instance = NULL; +boost::once_flag LockedPageManager::init_flag = BOOST_ONCE_INIT; + /** Determine system page size in bytes */ static inline size_t GetSystemPageSize() { |