码迷,mamicode.com
首页 > 编程语言 > 详细

C#字典Dictionay多线程读是否是安全的

时间:2019-01-25 23:20:43      阅读:285      评论:0      收藏:0      [点我收藏+]

标签:threading   只读   static   rgs   for   dom   代码   完全   generic   

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

测试代码:

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();
        }

完全不需要担心,放心

 

C#字典Dictionay多线程读是否是安全的

标签:threading   只读   static   rgs   for   dom   代码   完全   generic   

原文地址:https://www.cnblogs.com/slmk/p/10322245.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!