From 0b8f47dc531d3cbaf172a5e17f27524a40833dba Mon Sep 17 00:00:00 2001 From: Chuck Date: Tue, 1 Oct 2013 17:23:17 +0700 Subject: 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. --- src/allocators.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/allocators.cpp') diff --git a/src/allocators.cpp b/src/allocators.cpp index b239b623d..15f34aa2c 100644 --- a/src/allocators.cpp +++ b/src/allocators.cpp @@ -24,6 +24,9 @@ #include // 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() { -- cgit v1.2.3