mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-19 00:41:43 +00:00
Replace std::lock_guard and std::lock with std::scoped_lock (#1758)
std::scoped_lock was introduced in C++17 and is strictly better than std::lock_guard as it supports locking any number of mutexes safely. It's also easier to use than std::lock for locking multiple mutexes at once.
This commit is contained in:
committed by
Peter Johnson
parent
24d31df55a
commit
62be0392b6
@@ -40,13 +40,13 @@ GlobalErrors& GlobalErrors::GetInstance() {
|
||||
|
||||
void GlobalErrors::Insert(const Error& error) {
|
||||
GlobalErrors& inst = GetInstance();
|
||||
std::lock_guard lock(inst.mutex);
|
||||
std::scoped_lock lock(inst.mutex);
|
||||
inst.lastError = &(*inst.errors.insert(error).first);
|
||||
}
|
||||
|
||||
void GlobalErrors::Insert(Error&& error) {
|
||||
GlobalErrors& inst = GetInstance();
|
||||
std::lock_guard lock(inst.mutex);
|
||||
std::scoped_lock lock(inst.mutex);
|
||||
inst.lastError = &(*inst.errors.insert(std::move(error)).first);
|
||||
}
|
||||
|
||||
@@ -165,14 +165,14 @@ void ErrorBase::SetGlobalWPIError(const wpi::Twine& errorMessage,
|
||||
|
||||
Error ErrorBase::GetGlobalError() {
|
||||
auto& inst = GlobalErrors::GetInstance();
|
||||
std::lock_guard mutex(inst.mutex);
|
||||
std::scoped_lock mutex(inst.mutex);
|
||||
if (!inst.lastError) return Error{};
|
||||
return *inst.lastError;
|
||||
}
|
||||
|
||||
std::vector<Error> ErrorBase::GetGlobalErrors() {
|
||||
auto& inst = GlobalErrors::GetInstance();
|
||||
std::lock_guard mutex(inst.mutex);
|
||||
std::scoped_lock mutex(inst.mutex);
|
||||
std::vector<Error> rv;
|
||||
for (auto&& error : inst.errors) rv.push_back(error);
|
||||
return rv;
|
||||
@@ -180,7 +180,7 @@ std::vector<Error> ErrorBase::GetGlobalErrors() {
|
||||
|
||||
void ErrorBase::ClearGlobalErrors() {
|
||||
auto& inst = GlobalErrors::GetInstance();
|
||||
std::lock_guard mutex(inst.mutex);
|
||||
std::scoped_lock mutex(inst.mutex);
|
||||
inst.errors.clear();
|
||||
inst.lastError = nullptr;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user