From e177fd8ccd75b5fdd4779d6b2f107fde0c395bc0 Mon Sep 17 00:00:00 2001 From: Riccardo Elitropi Date: Tue, 9 Dec 2025 10:05:29 +0100 Subject: [PATCH] EgtExecutor : - in Redis migliorata la gestione dei Messaggi per thread concorrenti. --- EXE_Redis.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/EXE_Redis.cpp b/EXE_Redis.cpp index a0d04a0..23dcc02 100644 --- a/EXE_Redis.cpp +++ b/EXE_Redis.cpp @@ -717,10 +717,11 @@ RedisPubSubUnsubMsgCallback( redisAsyncContext* ctx, void* r, void*) if ( Iter != vAsyncRedisMessages.end()) { RedisAsyncMessage& LockedMessage = Iter->second ; while ( LockedMessage.Lock.test_and_set( memory_order_acquire)) - this_thread::sleep_for( chrono::nanoseconds{ 1}) ; + LockedMessage.Lock.wait( true, memory_order_relaxed) ; ++ LockedMessage.nCount ; LockedMessage.sMessage = sMessage ; LockedMessage.Lock.clear( memory_order_release) ; + LockedMessage.Lock.notify_all() ; } } else { @@ -1373,10 +1374,11 @@ ExeRedisAsyncGetMessage( int nIdConnection, const string& sChannel, int& nCount, else { RedisAsyncMessage& LockedMessage = Iter->second ; while ( LockedMessage.Lock.test_and_set( memory_order_acquire)) - this_thread::sleep_for( chrono::nanoseconds{ 1}) ; + LockedMessage.Lock.wait( true, memory_order_relaxed) ; nCount = LockedMessage.nCount ; sMessage = LockedMessage.sMessage ; LockedMessage.Lock.clear( memory_order_release) ; + LockedMessage.Lock.notify_all() ; } return true ;