.net中如何证明List<int>是线程非安全的

 

  我们可以通过以下代码来验证 List<int> 为何是线程非安全的,执行以下代码,然后查看输出结果。 

 

复制代码
 static void Main()
    {

        var toCount = 100;
        #region list线程非安全
        var list = new List<int>();
        // 并行添加元素
        Parallel.For(0, toCount, i =>
        {
            list.Add(i);
        //Thread.Sleep(10);

        });
        Console.WriteLine($"list count {list.Count}");
        #endregion
        Console.ReadLine();
    }
复制代码

 

使用  Parallel.For  来并发添加元素,执行数次之后发现输出的都为100,看起来似乎没有什么问题。


但是增加   Thread.Sleep(10);  这一行,目的是为了 增加多个线程同时 修改共享资源的概率。

再次运行,发现list只增加了89个元素。

这说明 List<int>是 非线程安全的。

 

posted @   超难微猫  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示