| 7329 | } |
| 7330 | |
| 7331 | void *timeThreadMain(void*) { |
| 7332 | timespec delay; |
| 7333 | delay.tv_sec = 0; |
| 7334 | delay.tv_nsec = 100; |
| 7335 | int cycle_count = 0; |
| 7336 | aeThreadOnline(); |
| 7337 | while (true) { |
| 7338 | { |
| 7339 | aeThreadOffline(); |
| 7340 | std::unique_lock<fastlock> lock(time_thread_lock); |
| 7341 | aeThreadOnline(); |
| 7342 | if (sleeping_threads >= cserver.cthreads) { |
| 7343 | aeThreadOffline(); |
| 7344 | time_thread_cv.wait(lock); |
| 7345 | aeThreadOnline(); |
| 7346 | cycle_count = 0; |
| 7347 | } |
| 7348 | } |
| 7349 | updateCachedTime(); |
| 7350 | if (cycle_count == MAX_CYCLES_TO_HOLD_FORK_LOCK) { |
| 7351 | aeThreadOffline(); |
| 7352 | aeThreadOnline(); |
| 7353 | cycle_count = 0; |
| 7354 | } |
| 7355 | #if defined(__APPLE__) |
| 7356 | nanosleep(&delay, nullptr); |
| 7357 | #else |
| 7358 | clock_nanosleep(CLOCK_MONOTONIC, 0, &delay, NULL); |
| 7359 | #endif |
| 7360 | cycle_count++; |
| 7361 | } |
| 7362 | aeThreadOffline(); |
| 7363 | } |
| 7364 | |
| 7365 | void *workerThreadMain(void *parg) |
| 7366 | { |
nothing calls this directly
no test coverage detected