| 94 | } |
| 95 | |
| 96 | void Notify() { |
| 97 | auto s = base::subtle::Release_AtomicExchange(&state_, NOTIFIED); |
| 98 | DCHECK_NE(s, NOTIFIED) << "may only notify once"; |
| 99 | if (s == NOT_NOTIFIED_HAS_WAITERS) { |
| 100 | sys_futex(&state_, FUTEX_WAKE | FUTEX_PRIVATE_FLAG, INT_MAX, |
| 101 | nullptr /* ignored */, nullptr /* ignored */, 0 /* ignored */); |
| 102 | } |
| 103 | } |
| 104 | |
| 105 | private: |
| 106 | enum { |