Converts std::unique_lock to std::lock_guard.
Tested by compiling for CXX threads, OpenMP, no threads, and TBB.
Change-Id: If1ba5cfce83e2ad4e1015354ce67f5b23e89101f
diff --git a/internal/ceres/concurrent_queue.h b/internal/ceres/concurrent_queue.h
index c4e076f..52e2903 100644
--- a/internal/ceres/concurrent_queue.h
+++ b/internal/ceres/concurrent_queue.h
@@ -83,7 +83,7 @@
// Atomically push an element onto the queue. If a thread was waiting for an
// element, wake it up.
void Push(const T& value) {
- std::unique_lock<std::mutex> lock(mutex_);
+ std::lock_guard<std::mutex> lock(mutex_);
queue_.push(value);
work_pending_condition_.notify_one();
}
@@ -93,7 +93,7 @@
bool Pop(T* value) {
CHECK(value != nullptr);
- std::unique_lock<std::mutex> lock(mutex_);
+ std::lock_guard<std::mutex> lock(mutex_);
return PopUnlocked(value);
}
@@ -114,14 +114,14 @@
// exit Wait() without getting a value. All future Wait requests will return
// immediately if no element is present until EnableWaiters is called.
void StopWaiters() {
- std::unique_lock<std::mutex> lock(mutex_);
+ std::lock_guard<std::mutex> lock(mutex_);
wait_ = false;
work_pending_condition_.notify_all();
}
// Enable threads to block on Wait calls.
void EnableWaiters() {
- std::unique_lock<std::mutex> lock(mutex_);
+ std::lock_guard<std::mutex> lock(mutex_);
wait_ = true;
}
diff --git a/internal/ceres/concurrent_queue_test.cc b/internal/ceres/concurrent_queue_test.cc
index 3b15c4b..698966a 100644
--- a/internal/ceres/concurrent_queue_test.cc
+++ b/internal/ceres/concurrent_queue_test.cc
@@ -189,7 +189,7 @@
std::thread thread([&]() {
{
- std::unique_lock<std::mutex> lock(mutex);
+ std::lock_guard<std::mutex> lock(mutex);
waiting = true;
}
@@ -197,7 +197,7 @@
bool valid = queue.Wait(&element);
{
- std::unique_lock<std::mutex> lock(mutex);
+ std::lock_guard<std::mutex> lock(mutex);
waiting = false;
value = element;
valid_value = valid;
@@ -209,7 +209,7 @@
// Ensure nothing is has been popped off the queue
{
- std::unique_lock<std::mutex> lock(mutex);
+ std::lock_guard<std::mutex> lock(mutex);
EXPECT_TRUE(waiting);
ASSERT_FALSE(valid_value);
ASSERT_EQ(0, value);
@@ -234,7 +234,7 @@
auto task = [&]() {
{
- std::unique_lock<std::mutex> lock(mutex);
+ std::lock_guard<std::mutex> lock(mutex);
waiting = true;
}
@@ -242,7 +242,7 @@
bool valid = queue.Wait(&element);
{
- std::unique_lock<std::mutex> lock(mutex);
+ std::lock_guard<std::mutex> lock(mutex);
waiting = false;
value = element;
valid_value = valid;
@@ -256,7 +256,7 @@
// Ensure the thread is waiting.
{
- std::unique_lock<std::mutex> lock(mutex);
+ std::lock_guard<std::mutex> lock(mutex);
EXPECT_TRUE(waiting);
}
@@ -286,7 +286,7 @@
// Ensure nothing is popped off the queue.
{
- std::unique_lock<std::mutex> lock(mutex);
+ std::lock_guard<std::mutex> lock(mutex);
EXPECT_TRUE(waiting);
ASSERT_FALSE(valid_value);
ASSERT_EQ(0, value);
diff --git a/internal/ceres/parallel_for_cxx.cc b/internal/ceres/parallel_for_cxx.cc
index 3da5a87..20a689d 100644
--- a/internal/ceres/parallel_for_cxx.cc
+++ b/internal/ceres/parallel_for_cxx.cc
@@ -60,7 +60,7 @@
// Increment the number of jobs that have finished and signal the blocking
// thread if all jobs have finished.
void Finished() {
- std::unique_lock<std::mutex> lock(mutex_);
+ std::lock_guard<std::mutex> lock(mutex_);
++num_finished_;
CHECK_LE(num_finished_, num_total_);
if (num_finished_ == num_total_) {
@@ -196,7 +196,7 @@
{
// Get the next available chunk of work to be performed. If there is no
// work, return false.
- std::unique_lock<std::mutex> lock(shared_state->mutex_i);
+ std::lock_guard<std::mutex> lock(shared_state->mutex_i);
if (shared_state->i >= shared_state->num_work_items) {
return false;
}
diff --git a/internal/ceres/thread_pool.cc b/internal/ceres/thread_pool.cc
index 9c7bb89..8fc7f83 100644
--- a/internal/ceres/thread_pool.cc
+++ b/internal/ceres/thread_pool.cc
@@ -62,7 +62,7 @@
}
ThreadPool::~ThreadPool() {
- std::unique_lock<std::mutex> lock(thread_pool_mutex_);
+ std::lock_guard<std::mutex> lock(thread_pool_mutex_);
// Signal the thread workers to stop and wait for them to finish all scheduled
// tasks.
Stop();
@@ -72,7 +72,7 @@
}
void ThreadPool::Resize(int num_threads) {
- std::unique_lock<std::mutex> lock(thread_pool_mutex_);
+ std::lock_guard<std::mutex> lock(thread_pool_mutex_);
const int num_current_threads = thread_pool_.size();
if (num_current_threads >= num_threads) {
@@ -92,7 +92,7 @@
}
int ThreadPool::Size() {
- std::unique_lock<std::mutex> lock(thread_pool_mutex_);
+ std::lock_guard<std::mutex> lock(thread_pool_mutex_);
return thread_pool_.size();
}
diff --git a/internal/ceres/thread_pool_test.cc b/internal/ceres/thread_pool_test.cc
index 5485fe4..2b1bf87 100644
--- a/internal/ceres/thread_pool_test.cc
+++ b/internal/ceres/thread_pool_test.cc
@@ -59,7 +59,7 @@
for (int i = 0; i < num_tasks; ++i) {
thread_pool.AddTask([&]() {
- std::unique_lock<std::mutex> lock(mutex);
+ std::lock_guard<std::mutex> lock(mutex);
++value;
condition.notify_all();
});
@@ -96,7 +96,7 @@
auto task = [&]() {
// This will block until the mutex is released inside the condition
// variable.
- std::unique_lock<std::mutex> lock(mutex);
+ std::lock_guard<std::mutex> lock(mutex);
++value;
condition.notify_all();
};
@@ -150,7 +150,7 @@
thread_pool.AddTask([&]() {
// This will block until the mutex is released inside the condition
// variable.
- std::unique_lock<std::mutex> lock(mutex);
+ std::lock_guard<std::mutex> lock(mutex);
++value;
condition.notify_all();
});