diff options
| author | Chuck <[email protected]> | 2013-10-01 17:23:17 +0700 |
|---|---|---|
| committer | Chuck <[email protected]> | 2013-10-20 14:29:24 +0700 |
| commit | 0b8f47dc531d3cbaf172a5e17f27524a40833dba (patch) | |
| tree | eb88d649af3af86b65f914206dfe30ad06230d33 /src/allocators.cpp | |
| parent | Merge pull request #3106 from super3/master (diff) | |
| download | discoin-0b8f47dc531d3cbaf172a5e17f27524a40833dba.tar.xz discoin-0b8f47dc531d3cbaf172a5e17f27524a40833dba.zip | |
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 b239b623d..15f34aa2c 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() { |