开发进阶 - 随机数的线程安全
原文中文,约6000字,阅读约需15分钟。发表于: 。最近做了个小应用,里面涉及到随机数 Random 的使用,期间填了个不大不小的坑,才有了这篇文章。前言随机数使用的场景还是挺多的。.Net 提供了一个内置的随机数发生器类 system.Random。这里,我们不讨论加密安全的随机数发生器System.Security.Cryptography.RandomNumberGenerator。通常,我们会这样使用随机数:Randomrand...
本文讨论了多线程环境下使用随机数可能出现的线程不安全问题。作者介绍了使用系统提供的Random类时可能出现的问题,并提出了解决方案。其中一种方案是为每个线程创建一个独立的Random实例,但会消耗大量内存资源。另一种方案是封装Random类到自定义的ThreadSafeRandom类中,并使用ThreadStatic特性为每个线程创建一个Random实例,保证线程安全。作者还提到了在不同版本的.NET框架中使用Random类的注意事项。