logic: Force unlock shared memory mutex of SharedMemoryGarbageCollector on creation

This commit is contained in:
Eberhard Graether
2018-06-30 01:48:31 +02:00
parent 172f1b7934
commit 84ddb4ba21
3 changed files with 9 additions and 1 deletions
@@ -163,6 +163,11 @@ SharedMemory::~SharedMemory()
}
}
void SharedMemory::unlockSharedMutex()
{
getMutex().unlock();
}
std::string SharedMemory::getMemoryName() const
{
return s_memoryNamePrefix + m_name;
+3 -1
View File
@@ -40,7 +40,7 @@ public:
template <typename T>
using Set = boost::interprocess::set<T, std::less<T>, boost::interprocess::allocator<T, Allocator>>;
// Names addressing shared memory objects longer than 29 characters can throw and exception
// Names addressing shared memory objects longer than 29 characters can throw an exception
static std::string checkName(const std::string& name);
static std::string checkSharedMemory(const std::string& name);
static void deleteSharedMemory(const std::string& name);
@@ -99,6 +99,8 @@ public:
std::string m_memoryName;
};
void unlockSharedMutex();
private:
static const char* s_memoryNamePrefix;
static const char* s_mutexNamePrefix;
@@ -40,6 +40,7 @@ SharedMemoryGarbageCollector::SharedMemoryGarbageCollector()
: m_memory(getMemoryName(), 65536 /* 64 kB */, SharedMemory::OPEN_OR_CREATE)
, m_loopIsRunning(false)
{
m_memory.unlockSharedMutex();
}
SharedMemoryGarbageCollector::~SharedMemoryGarbageCollector()