gpt4 book ai didi

c# - 静态或非静态方法,线程安全是针对类型而不是方法

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

我有一段时间有这个困惑,静态方法实现线程安全吗,实例方法肯定是线程安全的,如果我们为每个线程分配一个单独的实例,那么它们就不会干涉,然后我意识到,线程安全性更高关于types then methods,它们本身不是内存分配,所以我们举个例子:

private static ConcurrentDictionary<int,int> cd;

public static void Method1(int userid)
{
// Modify static object cd based on userid key
}

public void Method2(int userid)
{
// Modify static object cd based on userid key
}

本质上,当运行时提供不同用户 ID 的多个线程访问时,两种方法之间没有区别。我已经进行了相同的测试,但想验证我的理解是否正确。

最佳答案

静态方法不是线程安全的因为它们是静态的。

它们是线程安全的,因为有人让它们成为线程安全的。通常在 .NET 框架中,静态方法是线程安全的因为有人这样写

您可以轻松地编写非线程安全的静态成员,这里没有任何魔法。

编写线程安全的实例成员必须遵循的规则与编写线程安全的静态成员必须遵循的规则完全相同。

关于c# - 静态或非静态方法,线程安全是针对类型而不是方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26054411/

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