静态锁可以跨不同的子类工作吗?

2023-11-23

如果我有

abstract class Parent
{
    static object staticLock = new object();

    public void Method1()
    {
        lock(staticLock)
        {
            Method2();
        }
    }

    protected abstract Method2();
}

class Child1 : Parent
{
    protected override Method2()
    {
          // Do something ...
    }
}

class Child2 : Parent
{
    protected override Method2()
    {
          // Do something else ...
    }
}

将致电new Child1().Method1() and new Child2().Method1()使用同一个锁?


是的。派生类不会获得new来自基类的静态数据的副本。

然而,情况并非如此generic类。如果你说:

class Base<T>
{
    protected static object sync = new object();
    ...
}

class Derived1 : Base<int> { ... }
class Derived2 : Base<int> { ... }
class Derived3 : Base<string> { ... }
class Derived4 : Base<string> { ... }
class Derived5 : Base<object> { ... }
class Derived6 : Base<object> { ... }

Derived1 和 Derived2 的实例具有相同的同步对象。 Derived3 和 Derived4 的实例具有相同的同步对象。 Derived5 和 Derived6 的实例具有相同的同步对象。但这三个同步对象都是不同的对象。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

静态锁可以跨不同的子类工作吗? 的相关文章

  • 使用 POST 的 HttpWebRequest 的性能

    我有一个用于测试网络服务的小工具 它可以使用 POST 或 GET 调用 Web 服务 使用POST的代码是 public void PerformRequest WebRequest webRequest WebRequest Creat
  • 如何从经过身份验证的 SecurityToken 中获取声明

    我将令牌作为字符串传递到 SOAP 服务中 并验证了该令牌是否有效 我现在有一个 SecurityToken 在调试模式下我可以看到所有声明 特别是我想传递到另一个方法的 userId 声明 我似乎不知道如何获得这些索赔 现在 我解码了令牌
  • C++中类成员函数相互调用有什么好处?

    我是 C 新手 我发现下面的编程风格对我来说很有趣 我在这里写了一个简化版本 include
  • 如何在 C++ 中为指针“this”赋值

    在函数中 如何分配this一个新的价值 您可以分配对象this点于 this XY 但你不能分配直接值this this XY Error Expression is not assignable
  • 获取列表框中视图中的项目

    我有一个 ListBox 其属性 VirtualizingStackPanel VirtualizationMode 设置为 回收 我正在绑定一个自定义集合 实现IList and IList
  • C# 结构默认值

    我有一个方法 它接受一个包含许多具有基本数据类型的字段的结构 我想传递大部分默认值 但需要进行一些调整 但我了解结构声明中的基本字段不能包含默认值声明 例如struct S int a 42 现在是这样的 OptionsStruct opt
  • 托管 ODP.NET 驱动程序未显示在“数据源”对话框中

    在我的计算机上安装托管 ODP NET 后 ODP NET 托管驱动程序没有出现在里面选择数据源Visual Studio 2013 Professional 中的对话框 它应该是这样的 这就是它在我的机器上的实际外观 我已按照 轻松驱动
  • 使用 STL 流时如何格式化我自己的对象?

    我想将我自己的对象输出到 STL 流 但具有自定义格式 我想出了这样的东西 但由于我之前从未使用过 locale 和 imbue 所以我不知道这是否有意义以及如何实现 MyFacet 和operator 所以我的问题是 这是否有意义以及如何
  • 为什么连续抛出 2 个异常不会生成无法访问的代码警告?

    为什么以下代码行不会创建编译器警告 void Main throw new Exception throw new Exception 据我所知 编译器应该通知您无法到达第二个抛出异常 这显然是一个编译器错误 它是在 C 3 0 中引入的
  • 如何在VS2005中使用从.bat而不是.exe启动的外部程序进行调试?

    在我的 c 项目的调试属性中 我选择了 启动外部程序 并选择了我希望将调试器附加到的程序的 exe 但是 现在我需要从 bat 文件而不是 exe 启动程序 但 VS2005 似乎不允许这样做 这可能吗 编辑 为了澄清 我需要调试从 bat
  • 从单应性估计 R/T

    我一直在尝试计算 2 个图像中的特征 然后将这些特征传递回CameraParams R没有运气 特征已成功计算并匹配 但是问题是将它们传递回R t 我明白你必须分解Homography为了使这一点成为可能 我已经使用如下方法完成了 http
  • 具有多个父项的 Qt 树模型

    我想构建一棵树 其中一个元素可以引用另一个元素 我想要构建的树是 像这样的东西 A B C D E F P this is a pointer to C D first child of C E second child of C I fo
  • 在 Visual Studio 2012 Express 中设置 C++ 调试环境

    我需要调试的应用程序需要设置环境变量 这在 Visual Studio 2012 中似乎非常复杂 我想做类似的事情 set path c foo c bar c windows c program files application set
  • 禁止显示“资源名称不是有效标识符”

    我有一个包含 5000 多个资源字符串的项目 几乎所有的标识符中都有句点 我们正在切换到自动生成强类型类 当然 由于周期的原因 我们看到了几千条警告 资源名称 blah 不是有效的标识符 我知道不是 生成器将句点更改为下划线 一切都很好 我
  • g++ / gcc 是否支持 C++20 新的atomic_flag 功能?

    根据参考参数 https en cppreference com w cpp atomic atomic flag c 20 有丰富的 对我来说有用的 支持atomic flag运营 然而 目前尚不清楚 gcc 是否支持这些功能 它们在任何
  • 使用未命名命名空间而不是静态命名空间

    我可以假设在未命名命名空间中声明的对象相当于static namespace int x 1 static int x 2 FWIK 在这两种情况下 x将具有静态存储期限和内部链接 声明为的对象的所有规则也是如此static适用于未命名名称
  • 查找数组中的多个索引

    假设我有一个像这样的数组 string fruits watermelon apple apple kiwi pear banana 是否有一个内置函数可以让我查询 apple 的所有索引 例如 fruits FindAllIndex ap
  • C# 多维数组解析

    我有一个多维数组 内容在调试器中看起来像这样 数组设置为 String s new String 6 4 A B Yes C A B Yes C A B No C A B Yes C A B Yes C A B Yes C A B No C
  • 使用空的weak_ptr作为参数调用map::count安全吗?

    打电话安全吗map count http www cplusplus com reference map map count on an 未初始化因此为空weak ptr http en cppreference com w cpp mem
  • Adobe Illustrator 中的折线简化如何工作?

    我正在开发一个记录笔划的应用程序 您可以使用定点设备来绘制笔划 在上图中 我绘制了一个笔划 其中包含 453 个数据点 我的目标是大幅减少数据点的数量 同时仍然保持原始笔画的形状 对于那些感兴趣的人 上图笔画的坐标可以作为GitHub 上的

随机推荐

  • 为笔记本设置默认 sys.path

    我将所有 py 文件放在文件夹 script 中 将所有 IPython 笔记本放在名为 Notebook 的文件夹下 每个笔记本文件对脚本上的一个或多个文件存在多个交叉依赖关系 Having sys path append在每个笔记本顶部
  • Sails.JS HTTP + HTTPS

    我正在尝试弄清楚如何提升一个同时响应 HTTP 和 HTTPS 请求的 sails 应用程序 我使用了 config local js 方法来配置express 如下 详细here var fs require fs module expo
  • 警报对话框中 EditText 框的空验证 - Android

    我正在尝试向位于警报对话框内的编辑文本字段添加一些文本验证 它提示用户输入名称 我想添加一些验证 这样如果他们输入的内容为空或为空 除了创建一个显示错误的 Toast 之外 它不会执行任何操作 到目前为止我有 AlertDialog Bui
  • IoC、Dll 引用和程序集扫描

    虽然这个问题与 StructureMap 有关 但我的一般问题是 使用 IoC 连接组件时 容器in code 相反 通过配置xml 你 通常需要明确的项目 构建 对所有程序集的引用 为什么要使用单独的组件 因为 抽象类驻留在 将组件与混凝
  • W/ViewRootImpl:由于没有窗口焦点而取消事件:MotionEvent?

    每次我从子活动按回父活动时都会收到此错误 W ViewRootImpl Cancelling event due to no window focus MotionEvent action ACTION CANCEL actionButto
  • 如何在 CouchDB 中使用 Map-Reduce 计算最大值?

    我知道有内置的 stats提供 sum count min max 和 sumsqr 的函数 我想知道的是如何以映射缩减方式计算最大值 如果没有更多信息 我无法想出一个可以工作的归约函数 我唯一能想到的就是对值进行排序并选取第一个值 我的地
  • 如何对单个 Neo4j 数据库进行分区?

    是否可以将一个 Neo4j 数据库进行划分 使一个数据库中有多个起点 从而可以隔离所有查询 而不是拥有多个数据库 我已经考虑过这一点 并且我认为它在一定程度上可以发挥作用 但是一旦使用了标签之类的东西 那么这个想法就行不通了 因为标签查询将
  • 在 jenkins 的 github pull request 中添加评论

    我在 Jenkins 中使用 Git 拉取请求构建器插件将拉取请求链接到 Jenkins 作业由钩子触发 一切运行顺利 尽管如此 在构建结束时 我想在出现失败 成功或错误时添加注释 我尝试使用管道并使用 pullRequest commen
  • AsyncUdpSocket如何使用接收

    我正在尝试让 iPhone 的程序在模拟器上运行 我的问题是接收 UDP 数据 我使用异步 Udp 套接字 如果我制作一个套接字并使用sendData NSData toHost 效果很好 我想我无法弄清楚接收功能是如何工作的 我假设是这样
  • MySQL、json、JSON_ARRAY_APPEND - 为什么追加在 5.7.13 上不起作用?

    我到底如何将数据插入 json mysql 字段 我可以创造一个记录 INSERT INTO git object user id git meta last update VALUES 11111 host a id 1 select n
  • instagram api 中的回调 url 是什么以及如何实现它

    嗨 我是初学者程序员 我正在尝试使用 Instagram 的实时照片更新 api 我的目的是使用这个API CONSOLE的订阅方法 https apigee com console instagram 但我无法理解和处理回调 url 回调
  • 具有离线路线功能的离线 iPhone 地图 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我正在开发一个 iPhon
  • 如何传递日期时间参数?

    如何将 UTC 日期传递给 Web API Passing 2010 01 01工作正常 但是当我传递 UTC 日期时 例如2014 12 31T22 00 00 000Z 带有时间部分 我收到 HTTP 404 响应 所以 http do
  • 防止 ASP.Net MVC 中的 Cookie 重放攻击

    我的任务是实现本文中的第 4 点 http support microsoft com kb 900111 这涉及使用会员资格提供程序在用户登录和注销时向服务器端记录添加注释 然后确认当使用 cookie 进行身份验证时 用户尚未注销 这对
  • 按字母顺序粘贴两个向量的元素

    假设我有两个向量 a lt c george harry harry chris steve steve steve harry b lt c harry steve chris harry harry george chris georg
  • 将 GNU 大小写范围扩展转换为标准 C

    GNU 大小写范围扩展允许 switch 语句中的大小写范围 switch value case 1 8 printf Hello 1 to 8 n break default printf Hello default n break 如何
  • 当您的类未定义 #each 时,返回 Enumerator::Lazy 的最佳方法是什么?

    Enumerable lazy依赖于你的枚举提供 each方法 如果你的枚举没有 each你不能使用的方法 lazy Now Kernel enum for and to enum提供指定枚举方法以外的灵活性 each Kernel enu
  • 使用 Delphi 6 处理 Unicode 字符

    我有一个用 Delphi 6 开发的轮询应用程序 它读取文件 根据规范解析文件 执行验证并上传到数据库 SQL Server 2008 精简版 我们必须为具有双字节字符集 DBCS 的操作系统提供支持 例如日本操作系统 因此 我们将 SQL
  • 使用 Boost::Regex 获取最后一场比赛

    我在 C 中有一个带有 Boost 的正则表达式 它匹配多行字符串中的行 正则表达式搜索找到第一个匹配项 但是我对匹配的最后一行感兴趣 我现在使用的代码是这样的 matched boost regex search input result
  • 静态锁可以跨不同的子类工作吗?

    如果我有 abstract class Parent static object staticLock new object public void Method1 lock staticLock Method2 protected abs