| 132 | |
| 133 | template<typename T> |
| 134 | static void CASDecrementThread(int64_t id, int64_t n, AtomicInt<T>* ai) { |
| 135 | T oldval = 0; |
| 136 | T newval = 0; |
| 137 | bool success = false; |
| 138 | for (int64_t i = 0; i < n * id; ++i) { |
| 139 | success = false; |
| 140 | while (!success) { |
| 141 | oldval = ai->Load(); |
| 142 | newval = oldval - 1; |
| 143 | success = ai->CompareAndSwap(oldval, newval); |
| 144 | } |
| 145 | } |
| 146 | } |
| 147 | |
| 148 | template<typename T> |
| 149 | static void TestMultipleThreadsCASIncDec() { |
nothing calls this directly
no test coverage detected