Fixes #19. Add destructor to ConditionBank.
[junction.git] / junction / striped / ConditionBank.cpp
index 30aec8783b258337b89854ffc01cb497dd6b6823..5fda2161113359779eaf6da093f09d7c16a4281c 100644 (file)
@@ -1,6 +1,6 @@
 /*------------------------------------------------------------------------
   Junction: Concurrent data structures in C++
-  Copyright (c) 2016 Jeff Preshing
+  Copyright (c) 2016-2017 Jeff Preshing
 
   Distributed under the Simplified BSD License.
   Original location: https://github.com/preshing/junction
@@ -20,6 +20,13 @@ namespace striped {
 
 ConditionBank DefaultConditionBank;
 
+ConditionBank::~ConditionBank() {
+    m_initSpinLock.lock();
+    ConditionPair* pairs = m_pairs.exchange(nullptr, turf::ConsumeRelease);
+    delete [] pairs;
+    m_initSpinLock.unlock();
+}
+
 ConditionPair* ConditionBank::initialize() {
     m_initSpinLock.lock();
     ConditionPair* pairs = m_pairs.loadNonatomic();