| 47 | ~TestQueue() { VERIFY_IS_EQUAL(val_.load(), 0); } |
| 48 | |
| 49 | bool Push() { |
| 50 | int val = val_.load(std::memory_order_relaxed); |
| 51 | for (;;) { |
| 52 | VERIFY_GE(val, 0); |
| 53 | VERIFY_LE(val, kQueueSize); |
| 54 | if (val == kQueueSize) return false; |
| 55 | if (val_.compare_exchange_weak(val, val + 1, std::memory_order_relaxed)) |
| 56 | return true; |
| 57 | } |
| 58 | } |
| 59 | |
| 60 | bool Pop() { |
| 61 | int val = val_.load(std::memory_order_relaxed); |
no test coverage detected