zoukankan      html  css  js  c++  java
  • C#字典Dictionay多线程读是否是安全的

    答案:是线程安全的,只读不写多线程下,完全不需要加锁!

    测试代码:

    using System;
    using System.Diagnostics;
    using System.Threading;
    using System.Collections.Generic;
    
    namespace hello
    {
        public class ThreadSafe
        {
            Dictionary<int, int> dits = new Dictionary<int, int>();
    
            public ThreadSafe()
            {
                for (int i = 0; i < 100; i++)
                {
                    dits.Add(i, i);
                }
            }
            public void Test(object i)
            {
                int t = Convert.ToInt32(i);
                int v;
                Thread.Sleep(1);
                dits.TryGetValue(t, out v);
                if (!t.Equals(v))
                {
                    Console.WriteLine("i:{0},v:{1}", t, v);
                }
            }
        }
    }

    模拟5万个线程读字典,看看是否混乱:

        static void Main(string[] args)
            {
                ThreadSafe ts = new ThreadSafe();
                Random random=new Random();
                Console.WriteLine("Hello World!2");
                for (int i = 0; i < 50000; i++)
                {
                    new Thread(new ParameterizedThreadStart(ts.Test)).Start(random.Next(100));
                }
                Console.Read();
            }

    完全不需要担心,放心

  • 相关阅读:
    poj1580
    poj1607
    poj1313
    poj1314
    c语言之extern和static
    C笔记(一)
    搭建Linux高可用性集群(第一天)
    利用回调函数实现泛型算法
    关于SQL server中的 identity
    SQL(一)
  • 原文地址:https://www.cnblogs.com/slmk/p/10322245.html
Copyright © 2011-2022 走看看