mirror of
https://github.com/Zygo/bees.git
synced 2025-05-17 21:35:45 +02:00
multilock: allow turning it off
Add a master switch to turn off the entire MultiLock infrastructure for testing, without having to remove and add all the individual entry points. Signed-off-by: Zygo Blaxell <bees@furryterror.org>
This commit is contained in:
parent
72c3bf8438
commit
606ac01d56
@ -14,6 +14,7 @@ namespace crucible {
|
|||||||
mutex m_mutex;
|
mutex m_mutex;
|
||||||
condition_variable m_cv;
|
condition_variable m_cv;
|
||||||
map<string, size_t> m_counters;
|
map<string, size_t> m_counters;
|
||||||
|
bool m_do_locking = true;
|
||||||
|
|
||||||
class LockHandle {
|
class LockHandle {
|
||||||
const string m_type;
|
const string m_type;
|
||||||
@ -33,6 +34,7 @@ namespace crucible {
|
|||||||
shared_ptr<LockHandle> get_lock_private(const string &type);
|
shared_ptr<LockHandle> get_lock_private(const string &type);
|
||||||
public:
|
public:
|
||||||
static shared_ptr<LockHandle> get_lock(const string &type);
|
static shared_ptr<LockHandle> get_lock(const string &type);
|
||||||
|
static void enable_locking(bool enabled);
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -62,11 +62,22 @@ namespace crucible {
|
|||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static MultiLocker s_process_instance;
|
||||||
|
|
||||||
shared_ptr<MultiLocker::LockHandle>
|
shared_ptr<MultiLocker::LockHandle>
|
||||||
MultiLocker::get_lock(const string &type)
|
MultiLocker::get_lock(const string &type)
|
||||||
{
|
{
|
||||||
static MultiLocker s_process_instance;
|
if (s_process_instance.m_do_locking) {
|
||||||
return s_process_instance.get_lock_private(type);
|
return s_process_instance.get_lock_private(type);
|
||||||
|
} else {
|
||||||
|
return shared_ptr<MultiLocker::LockHandle>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MultiLocker::enable_locking(const bool enabled)
|
||||||
|
{
|
||||||
|
s_process_instance.m_do_locking = enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user