diff options
Diffstat (limited to 'abseil-cpp/absl/synchronization/blocking_counter.h')
-rw-r--r-- | abseil-cpp/absl/synchronization/blocking_counter.h | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/abseil-cpp/absl/synchronization/blocking_counter.h b/abseil-cpp/absl/synchronization/blocking_counter.h index 1f53f9f..1908fdb 100644 --- a/abseil-cpp/absl/synchronization/blocking_counter.h +++ b/abseil-cpp/absl/synchronization/blocking_counter.h @@ -20,6 +20,8 @@ #ifndef ABSL_SYNCHRONIZATION_BLOCKING_COUNTER_H_ #define ABSL_SYNCHRONIZATION_BLOCKING_COUNTER_H_ +#include <atomic> + #include "absl/base/thread_annotations.h" #include "absl/synchronization/mutex.h" @@ -60,8 +62,7 @@ ABSL_NAMESPACE_BEGIN // class BlockingCounter { public: - explicit BlockingCounter(int initial_count) - : count_(initial_count), num_waiting_(0) {} + explicit BlockingCounter(int initial_count); BlockingCounter(const BlockingCounter&) = delete; BlockingCounter& operator=(const BlockingCounter&) = delete; @@ -89,8 +90,9 @@ class BlockingCounter { private: Mutex lock_; - int count_ ABSL_GUARDED_BY(lock_); + std::atomic<int> count_; int num_waiting_ ABSL_GUARDED_BY(lock_); + bool done_ ABSL_GUARDED_BY(lock_); }; ABSL_NAMESPACE_END |