gpt4 book ai didi

C#:关于成员变量线程安全的问题

转载 作者:行者123 更新时间:2023-11-30 19:14:09 26 4
gpt4 key购买 nike

有人可以解释为什么线程示例总是使一个对象(特别是一个成员变量)成为静态的,如果它要被多个线程访问吗?

我的问题是,将成员变量设为静态意味着它将在该类的所有其他实例之间共享。有时我发现我希望一个类中的多个线程“接触”成员变量,但同时允许每个对象都有自己的副本。

执行我提到的内容的答案是否只是替换:

  • 使用 volatile 关键字
  • 使用锁(对象)

最佳答案

没有什么要求成员变量对于线程是静态的。

大多数示例使用静态变量,特别是因为它们试图展示如何在两个单独的线程之间同步数据。如果你想这样做,你需要有一个两个线程都可以访问的值。静态变量是最简单的选择,因为它们随处可见。

您可以轻松地将对类的引用传递到您的线程中,并让该线程和您的主线程共享一个非静态成员变量。但是,您将需要提供一种良好的锁定/同步机制,因为您将有两个线程共享一个类的一个实例。

关于C#:关于成员变量线程安全的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1380588/

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