MCPcopy Create free account
hub / github.com/Snapchat/KeyDB / timeThreadMain

Function timeThreadMain

src/server.cpp:7331–7363  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

7329}
7330
7331void *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
7365void *workerThreadMain(void *parg)
7366{

Callers

nothing calls this directly

Calls 4

aeThreadOnlineFunction · 0.85
aeThreadOfflineFunction · 0.85
updateCachedTimeFunction · 0.85
waitMethod · 0.45

Tested by

no test coverage detected