gpt4 book ai didi

c# - 用户范围的应用程序设置(在 VS 设计器中创建)线程安全吗?

转载 作者:行者123 更新时间:2023-11-30 22:33:40 25 4
gpt4 key购买 nike

我在我的 visual studio 项目中创建了应用程序设置,其中包含用户范围的设置和应用程序范围的设置。我的应用程序有多个线程可以同时访问读取或写入设置。我搜索了 MSDN 以查看可以在运行时更新的用户范围设置是否线程安全,但找不到明确的答案。有人知道吗?

提前致谢!

最佳答案

线程安全不仅仅是“这会破坏数据结构”。

在设置上下文中,您需要考虑三种不同的含义。设置数据结构在其中一个中是安全的,但在另外两个中则不安全。

  1. 设置和读取个人值
  2. 同时设置和读取多个值,获取或设置一致的图片
  3. 通过使用当前值计算新值来调整值,然后再将其恢复原值

在第一种情况下,是的,设置数据结构是线程安全的。您将无法将 half-Int64 写入设置并冒着另一个线程观察到该中间值的风险。

但是,如果您按顺序设置多个值,则不能保证另一个线程无法读取两个此类设置语句之间的所有设置,观察到一个更改,但不能观察到另一个。

换句话说,你可以有这样的场景:

Thread 1                       Thread 2
set setting 1
read setting 1
read setting 2
set setting 2

并且在读取一个值、从您读取的值计算出一个新值并将其设置回来的情况下,不能保证另一个线程无法执行相同的操作(即更改当前值)与此同时。

像这样:

Thread 1                       Thread 2
read setting 1
read setting 1
calculate new value
write setting 1
calculate new value
write setting 1

对于后两种情况,您需要一个可以锁定的外部同步对象,以确保您不会中途更改或丢失更改,但是以这种方式访问​​设置的所有代码都需要锁定那个对象。

关于c# - 用户范围的应用程序设置(在 VS 设计器中创建)线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8201029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com