Csharp/C#教程:C#数组中的线程安全性分享


C#数组中的线程安全性

有2个不同的线程:

线程安全与否?
(我的意思是这里没有锁定阅读或写作)

这个特例是安全的,是的。

读取和写入数组的不同部分不会干扰其他操作。

但是,根据元素的类型和元素的大小,读取和写入相同的位置可能会给您带来问题。

我不确定这是否安全。 想象一下你有byte []。 这些字节紧密堆积在内存中。 现在,如果修改这些字节,编译器可能会合并某些写操作以执行字(32位)大小的读取修改写入操作。 在某些CPU上,例如ARM,这是编译器唯一的内存修改指令。 如果您一次修改多个字节,这尤其方便。 CPU也可以做同样的事情。 它也可以在你不知道的情况下重新排序。 面对这种优化,读取相邻存储器的线程可能会看到部分修改。 您通常不会看到这种效果,因为堆分配器对您很好,并且总是为您提供至少字对齐的内存。

长话短说:是的。 只要它到两个不同的位置,它就是一个安全的操作。

前一段时间有一个关于这个问题的讨论 ,如果你很好奇,它会提供一些有用的信息。

上述就是C#学习教程:C#数组中的线程安全性分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/991711.html

(0)
上一篇 2021年12月24日
下一篇 2021年12月24日

精彩推荐