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

发布于 2024-12-02 11:56:55 字数 237 浏览 0 评论 0原文

在以下上下文中 Array.Contains 线程安全吗?

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

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

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

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

Is Array.Contains thread safe in the following context.

A static array is declared and initialized with 4 elements in a function.

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

It is then only accessed using validRotations.Contains(rotation) in the same function.

The function is called at any time from many different threads.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

柠檬心 2024-12-09 11:56:55

一般来说,不可变结构是线程安全的。

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

仅当您更改数据(更新/添加)时才会出现多线程问题。

In general, immutable structures are thread safe.

If the data never changes, you can access it safely from multiple threads.

Issues with multi-threading only occur when you change data (update/add).

痕至 2024-12-09 11:56:55

如果您没有修改数组(在您的情况下,您没有修改数组),这将是安全的。

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

This will be safe, provided you aren't modifying the array (which, in your case, you're not).

This is compiled to a local static field within the class, and initialized prior to use by any of the methods. As it's not being changed, and only read, it's basically just doing array reads in parallel, which is safe.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文