From 6d1cd00f153915b8c3a8117fd89fd8991b15bbac Mon Sep 17 00:00:00 2001 From: Malavan Sotheeswaran Date: Wed, 26 Jan 2022 14:02:39 -0800 Subject: [PATCH] time thread lock uses fastlock instead of std::mutex --- src/server.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/server.cpp b/src/server.cpp index 7a91fb97d..9df3764df 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -62,7 +62,6 @@ #include #include #include -#include #include #include "aelocker.h" #include "motd.h" @@ -96,8 +95,8 @@ struct redisServer server; /* Server global state */ redisServer *g_pserver = &GlobalHidden::server; struct redisServerConst cserver; thread_local struct redisServerThreadVars *serverTL = NULL; // thread local server vars -std::mutex time_thread_mutex; -std::condition_variable time_thread_cv; +fastlock time_thread_lock("Time thread lock"); +std::condition_variable_any time_thread_cv; int sleeping_threads = 0; void wakeTimeThread(); @@ -2959,7 +2958,7 @@ void beforeSleep(struct aeEventLoop *eventLoop) { // Scope lock_guard { - std::lock_guard lock(time_thread_mutex); + std::unique_lock lock(time_thread_lock); sleeping_threads++; serverAssert(sleeping_threads <= cserver.cthreads); } @@ -7206,7 +7205,7 @@ void OnTerminate() void wakeTimeThread() { updateCachedTime(); - std::lock_guard lock(time_thread_mutex); + std::unique_lock lock(time_thread_lock); if (sleeping_threads >= cserver.cthreads) time_thread_cv.notify_one(); sleeping_threads--; @@ -7221,7 +7220,7 @@ void *timeThreadMain(void*) { aeThreadOnline(); while (true) { { - std::unique_lock lock(time_thread_mutex); + std::unique_lock lock(time_thread_lock); if (sleeping_threads >= cserver.cthreads) { aeThreadOffline(); time_thread_cv.wait(lock);