c# ConcurrentDictionary

using System.Collections.Concurrent;

internal class Program
{
    static void Main(string[] args)
    {
        ConcurrentDictionary<string, RedisConnection> redisConnectionDic = new ConcurrentDictionary<string, RedisConnection>();
        int redisConn =10;
        //会多次创建
        //Parallel.For(1, 10, i =>
        //{
        //    redisConnectionDic.GetOrAdd(redisConn.ToString(), redisConn => { return CreateRedisClient(i); });
        //});

        //会多次创建
        //redisConnectionDic.GetOrAdd(redisConn.ToString(), CreateRedisClient(1));
        //redisConnectionDic.GetOrAdd(redisConn.ToString(), CreateRedisClient(2));

        redisConnectionDic.GetOrAdd(redisConn.ToString(), redisConn => { return CreateRedisClient(1); });
        redisConnectionDic.GetOrAdd(redisConn.ToString(), redisConn => { return CreateRedisClient(2); });
        //for (int i = 0; i < 10; i++)
        //{
        //    redisConnectionDic.GetOrAdd(redisConn.ToString(), redisConn => { return CreateRedisClient(i); });
        //}

        Console.WriteLine("Hello, World!");
        Console.ReadLine();
    }

    public static RedisConnection CreateRedisClient(int cluster_id)
    {
        Console.WriteLine($"正在初始化 cluster_id={cluster_id} 的redis 连接");
        Thread.Sleep(1000);
        return new RedisConnection();
    }
}

public class RedisConnection
{ }
posted @ 2025-09-16 18:59  Hey,Coder!  阅读(8)  评论(0)    收藏  举报