summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--datamanager.cpp3
-rw-r--r--datamanager.h4
2 files changed, 6 insertions, 1 deletions
diff --git a/datamanager.cpp b/datamanager.cpp
index 2dea169..55d1166 100644
--- a/datamanager.cpp
+++ b/datamanager.cpp
@@ -178,15 +178,18 @@ string DataManager::makeDataFilename(const string &subDirectory, const string &f
void DataManager::seedRandomNumbers(unsigned int seed)
{
+ lock_guard<mutex> lock(m_RngMutex);
m_mersenneTwisterRng.seed(seed);
}
void DataManager::seedRandomNumbers(seed_seq& seed)
{
+ lock_guard<mutex> lock(m_RngMutex);
m_mersenneTwisterRng.seed(seed);
}
int DataManager::randomInteger(int low, int high)
{
+ lock_guard<mutex> lock(m_RngMutex);
return uniform_int_distribution<>(low, high)(m_mersenneTwisterRng);
}
diff --git a/datamanager.h b/datamanager.h
index 92ebfd9..219a500 100644
--- a/datamanager.h
+++ b/datamanager.h
@@ -19,8 +19,9 @@
#ifndef QUACKLE_DATAMANAGER_H
#define QUACKLE_DATAMANAGER_H
-#include <string>
+#include <mutex>
#include <random>
+#include <string>
#include "playerlist.h"
@@ -148,6 +149,7 @@ private:
PlayerList m_computerPlayers;
mt19937_64 m_mersenneTwisterRng;
+ mutex m_RngMutex;
};
inline DataManager *DataManager::self()