in rocketmq-client-csharp/ClientManager.cs [41:75]
public IRpcClient GetRpcClient(string target)
{
_clientLock.EnterReadLock();
try
{
// client exists, return in advance.
if (_rpcClients.ContainsKey(target))
{
return _rpcClients[target];
}
}
finally
{
_clientLock.ExitReadLock();
}
_clientLock.EnterWriteLock();
try
{
// client exists, return in advance.
if (_rpcClients.ContainsKey(target))
{
return _rpcClients[target];
}
// client does not exist, generate a new one
var client = new RpcClient(target);
_rpcClients.Add(target, client);
return client;
}
finally
{
_clientLock.ExitWriteLock();
}
}