gpt4 book ai didi

.net - CLI库代码Thread Safe中的Comparer类是否安全?

转载 作者:行者123 更新时间:2023-12-01 15:55:02 26 4
gpt4 key购买 nike

public abstract class Comparer<T> : IComparer, IComparer<T>
{
static Comparer<T> defaultComparer;

public static Comparer<T> Default {
get {
Comparer<T> comparer = defaultComparer;
if (comparer == null) {
comparer = CreateComparer();
defaultComparer = comparer;
}
return comparer;
}
}

首先,Default属性线程安全吗?
以下语句的效果是否可能
comparer = CreateComparer(); 

可能对创建线程以外的线程不可见?
那么,构造了多个Comparer实例吗?

Microsoft是否这样做是为了将同步成本与
创建多个对象?

第二,为什么先将defaultComparer分配给比较器变量...然后再交换给它?
为什么比较器比较器= defaultComparer?

最佳答案

是的。确实确实创建了多个比较器,对defaultComparer进行了多次分配。没问题,它们都是一样的。垃圾收集器负责额外的工作。并且CLR为对象引用提供的原子分配保证可以确保不会错误地读取静态。

关于.net - CLI库代码Thread Safe中的Comparer类是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5333138/

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