EgtExecutor :
- in Redis migliorata la gestione dei Messaggi per thread concorrenti.
This commit is contained in:
+4
-2
@@ -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 ;
|
||||
|
||||
Reference in New Issue
Block a user