| 79 | } |
| 80 | |
| 81 | void NanoSleep(ui64 ns) noexcept { |
| 82 | #if defined(_win_) |
| 83 | Sleep(ns / 1000000); |
| 84 | #else |
| 85 | const ui64 NS = 1000 * 1000 * 1000; |
| 86 | struct timespec req; |
| 87 | req.tv_sec = ns / NS; |
| 88 | req.tv_nsec = ns % NS; |
| 89 | struct timespec left; |
| 90 | while (nanosleep(&req, &left) < 0) { |
| 91 | Y_ASSERT(errno == EINTR); |
| 92 | req = left; |
| 93 | } |
| 94 | #endif |
| 95 | } |
| 96 | |
| 97 | #if defined(_x86_) |
| 98 | namespace NPrivate { |