aboutsummaryrefslogtreecommitdiff
path: root/src/allocators.cpp
diff options
context:
space:
mode:
authorChuck <chuck@borboggle.com>2013-10-01 17:23:17 +0700
committerChuck <chuck@borboggle.com>2013-10-20 14:29:24 +0700
commit0b8f47dc531d3cbaf172a5e17f27524a40833dba (patch)
treeeb88d649af3af86b65f914206dfe30ad06230d33 /src/allocators.cpp
parent896853a011f6681d41bc585e020d74a7f2fece88 (diff)
downloadbitcoin-0b8f47dc531d3cbaf172a5e17f27524a40833dba.tar.xz
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.cpp3
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()
{