是Array.Contains在只读数组上的线程安全

时间:2011-08-31 19:42:04

标签: vb.net arrays thread-safety

在以下上下文中,Array.Contains线程是否安全。

声明静态数组并使用函数中的4个元素进行初始化。

Static validRotations() As Integer = {0, 90, 180, 270}

然后只能使用相同函数中的validRotations.Contains(rotation)访问它。

随时可以从许多不同的线程调用该函数。

2 个答案:

答案 0 :(得分:2)

通常,不可变结构是线程安全的。

如果数据永远不会改变,您可以从多个线程安全地访问它。

多线程问题仅在您更改数据(更新/添加)时发生。

答案 1 :(得分:1)

如果您没有修改阵列(在您的情况下,您不是这样),这将是安全的。

将其编译为类中的本地静态字段,并在使用之前通过任何方法进行初始化。由于它没有被改变,只是读取,它基本上只是并行执行数组读取,这是安全的。