gpt4 book ai didi

c# - 在读取全局字符串之前锁定?

转载 作者:太空宇宙 更新时间:2023-11-03 17:16:26 25 4
gpt4 key购买 nike

我有课而不是分拆后台工作人员来做一些处理器密集型的事情。后台工作人员读取了一些为整个类(class)全局声明的字符串……我需要锁定这些字符串吗? backgroundworker 从不写字符串,它们只是表示在类的构造函数中设置的一些目录位置,并且在构造函数之后几乎没有被类写入(并且从不被 backgroundworker 写入)。所以后台工作人员可能可以读取该字符串,因为它也被主类对象写入,尽管可能性很小。但是这些操作(后台 worker 的读取和主类的写入)对于字符串文字来说难道不是原子的吗?

谢谢,-罗伯特

编辑:我不关心字符串是否过时或其他任何事情(这在我的应用程序中不会是一个大问题),我更担心获取“对象正在别处使用”异常。

最佳答案

.NET 中的字符串是不可变的;他们无法改变。发生的情况是引用将指向一个完全不同的字符串,但字符串本身不会更改。

因此,如果您不特别介意更改后后台工作人员可能不会全部使用相同的字符串,那么您应该没问题。示例: worker A 读取字符串,其他东西更改它, worker B 读取新字符串——也许这不会导致问题,也许会导致问题。但是访问字符串本身绝对是安全的。

引用自documentation :

This type is thread safe.

预计到达时间 Martinho Fernandes 的一个很好的观点在下面的评论中:不是 的线程安全对象自动意味着您对它们所做的一切也是线程安全的。他甚至写了一个 blog post关于让我省去重复他所做的一切的工作:-)

关于c# - 在读取全局字符串之前锁定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1771813/

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