| 28 | } |
| 29 | |
| 30 | void TSpinWait::Sleep() noexcept { |
| 31 | ++C; |
| 32 | |
| 33 | if (C == MAX_SPIN_COUNT) { |
| 34 | ThreadYield(); |
| 35 | } else if ((C & MAX_SPIN_COUNT) == 0) { |
| 36 | usleep(RandomizeSleepTime(T)); |
| 37 | |
| 38 | T = Min<unsigned>(T * 3 / 2, 20000); |
| 39 | } else { |
| 40 | SpinLockPause(); |
| 41 | } |
| 42 | } |
no test coverage detected