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:
Tyler Veness
2019-07-08 22:58:39 -07:00
committed by Peter Johnson
parent 24d31df55a
commit 62be0392b6
79 changed files with 472 additions and 476 deletions

View File

@@ -23,12 +23,12 @@ static wpi::SmallPtrSet<MotorSafety*, 32> instanceList;
static wpi::mutex listMutex;
MotorSafety::MotorSafety() {
std::lock_guard lock(listMutex);
std::scoped_lock lock(listMutex);
instanceList.insert(this);
}
MotorSafety::~MotorSafety() {
std::lock_guard lock(listMutex);
std::scoped_lock lock(listMutex);
instanceList.erase(this);
}
@@ -51,32 +51,32 @@ MotorSafety& MotorSafety::operator=(MotorSafety&& rhs) {
}
void MotorSafety::Feed() {
std::lock_guard lock(m_thisMutex);
std::scoped_lock lock(m_thisMutex);
m_stopTime = Timer::GetFPGATimestamp() + m_expiration;
}
void MotorSafety::SetExpiration(double expirationTime) {
std::lock_guard lock(m_thisMutex);
std::scoped_lock lock(m_thisMutex);
m_expiration = expirationTime;
}
double MotorSafety::GetExpiration() const {
std::lock_guard lock(m_thisMutex);
std::scoped_lock lock(m_thisMutex);
return m_expiration;
}
bool MotorSafety::IsAlive() const {
std::lock_guard lock(m_thisMutex);
std::scoped_lock lock(m_thisMutex);
return !m_enabled || m_stopTime > Timer::GetFPGATimestamp();
}
void MotorSafety::SetSafetyEnabled(bool enabled) {
std::lock_guard lock(m_thisMutex);
std::scoped_lock lock(m_thisMutex);
m_enabled = enabled;
}
bool MotorSafety::IsSafetyEnabled() const {
std::lock_guard lock(m_thisMutex);
std::scoped_lock lock(m_thisMutex);
return m_enabled;
}
@@ -85,7 +85,7 @@ void MotorSafety::Check() {
double stopTime;
{
std::lock_guard lock(m_thisMutex);
std::scoped_lock lock(m_thisMutex);
enabled = m_enabled;
stopTime = m_stopTime;
}
@@ -106,7 +106,7 @@ void MotorSafety::Check() {
}
void MotorSafety::CheckMotors() {
std::lock_guard lock(listMutex);
std::scoped_lock lock(listMutex);
for (auto elem : instanceList) {
elem->Check();
}