| 2792 | } // namespace platform |
| 2793 | |
| 2794 | void threadSleep(double seconds) { |
| 2795 | #ifdef _WIN32 |
| 2796 | Sleep((DWORD)(seconds * 1e3)); |
| 2797 | #elif (defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__)) |
| 2798 | struct timespec req, rem; |
| 2799 | |
| 2800 | req.tv_sec = seconds; |
| 2801 | req.tv_nsec = (seconds - req.tv_sec) * 1e9L; |
| 2802 | |
| 2803 | while (nanosleep(&req, &rem) == -1 && errno == EINTR) { |
| 2804 | req.tv_sec = rem.tv_sec; |
| 2805 | req.tv_nsec = rem.tv_nsec; |
| 2806 | } |
| 2807 | #else |
| 2808 | #error Port me! |
| 2809 | #endif |
| 2810 | } |
| 2811 | |
| 2812 | void threadYield() { |
| 2813 | #ifdef _WIN32 |
no outgoing calls
no test coverage detected