Fix data race
diff --git a/src/core/lib/iomgr/lockfree_event.cc b/src/core/lib/iomgr/lockfree_event.cc
index 98e19f8..af1bee4 100644
--- a/src/core/lib/iomgr/lockfree_event.cc
+++ b/src/core/lib/iomgr/lockfree_event.cc
@@ -57,6 +57,10 @@
namespace grpc_core {
+LockfreeEvent::LockfreeEvent() {
+ gpr_atm_no_barrier_store(&state_, kClosureNotReady);
+}
+
LockfreeEvent::~LockfreeEvent() {
gpr_atm curr = gpr_atm_no_barrier_load(&state_);
if (curr & kShutdownBit) {
diff --git a/src/core/lib/iomgr/lockfree_event.h b/src/core/lib/iomgr/lockfree_event.h
index 47d0089..c667dcd 100644
--- a/src/core/lib/iomgr/lockfree_event.h
+++ b/src/core/lib/iomgr/lockfree_event.h
@@ -29,7 +29,7 @@
class LockfreeEvent {
public:
- LockfreeEvent() = default;
+ LockfreeEvent();
~LockfreeEvent();
LockfreeEvent(const LockfreeEvent&) = delete;
@@ -46,7 +46,7 @@
private:
enum State { kClosureNotReady = 0, kClosureReady = 2, kShutdownBit = 1 };
- gpr_atm state_ = kClosureNotReady;
+ gpr_atm state_;
};
} // namespace grpc_core