我使用单个Random实例在Parallel
查询中快速获取随机数,但我注意到,最终Random.Next
总是返回零.这有什么理由吗?
Random
不是线程安全的.您应该Random
为每个线程使用不同的实例.我建议您不要建议锁定,否则如果这是您整个时间的重要部分,那么最终可能不会比在单个线程中运行它更快.相反,您可以使用线程局部变量为每个线程创建一个单独的实例 - 注意确保不会意外地为所有实例使用相同的种子,这会在每个线程中为您提供相同的数字序列.
有关更多详细信息,请参阅我的随机性文章,包括示例代码.