即使在 Monitor.Enter 之后,Monitor.TryEnter 也始终返回 true

2024-03-01

我想我错过了一些关于正确行为的事情Monitor.Enter and Monitor.TryEnter。这是我编写的一段代码,用于将问题与其余代码分开:

object lockObj = new object();
bool result = Monitor.TryEnter(lockObj);
Console.Write(result);

结果总是true。这里没有什么惊喜。

object lockObj = new object();
Monitor.Enter(lockObj);
bool result = Monitor.TryEnter(lockObj);
Console.Write(result);

但这一次也是true. So is lockObj之后锁定Monitor.Enter或不?请给我一些新的看法。


这是因为您是在同一个线程中执行此操作。

另请记住(MSDN http://msdn.microsoft.com/en-us/library/de0542zz.aspx):

同一线程多次调用 Enter 是合法的 没有它阻塞;但是,必须有相同数量的 Exit 调用 在等待该对象的其他线程解除阻塞之前调用

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

即使在 Monitor.Enter 之后,Monitor.TryEnter 也始终返回 true 的相关文章

随机推荐

  • 使用 Django 创建可编辑的 HTML 表格

    我正在尝试创建一个 Django 应用程序 用户可以在其中创建电影列表 每次用户登录时 他们的电影列表都会以表格形式呈现给他们 该表将包含三列 一列用于电影名称 一列用于类型 另一列包含删除按钮 允许用户删除与该按钮对应的行 用户可以通过在
  • Tensorflow 2.1.0 错误,模块“tensorflow”没有属性“GraphKeys”

    我今天刚刚安装了新的 tf 和 cuda 但是当我运行之前与 tf 1 4 一起使用的代码时 在新的 tensorflow 2 1 0 和 cuda 10 1 下将无法工作 如何解决这个问题 为了社区的利益 在答案部分提及解决方案 即使它出
  • 如何避免 getter 和 setter

    我在很多地方读到过 getter 和 setter 是邪恶的 我明白为什么会这样 但我不知道如何完全避免它们 Say Item 是一个包含有关商品名称 数量 价格等信息的类 ItemList 是一个类 它有一个项目列表 要查找总计 int
  • 提供隐藏内部函数的 C API 的最佳实践[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我编写了一个 C 库 其中包含一些 h 文件和 c 文件 我将其编译为 a 静态库 我想只向用户公开某些功能 并使其余功能尽可能 模糊 以使逆向
  • 由于关系,DataMapper 无法删除记录

    我使用 Torrent 和 Tag 设置了多对 DataMapper MySQL 如下所示 class Torrent include DataMapper Resource property id Serial property name
  • Sendgrid 返回 202 但不发送电子邮件

    我正在尝试让 sendgrid 的基本 hello world 正常工作 但到目前为止还没有成功 响应返回代码 202 表明它将发送电子邮件 但电子邮件从未发送出去 有谁知道发生了什么事吗 import sendgrid sg sendgr
  • 这段C代码是如何工作的?

    What is a b a define f a b a b define g a a define h a g a main printf s n h f 1 2 how should I interpret this line 1 pr
  • React Native:触摸时更改 ListView 项目的样式

    我想在按下 ListView 项目时更新该项目的样式 以便最终用户知道他 她选择了一个项目 列表显示
  • iOS - 如何在我的应用程序中集成蓝牙设备

    我正在尝试创建一些连接到蓝牙设备的应用程序 一个简单的东西 比如蓝牙条形码扫描仪 可以扫描并将数字发送到我的应用程序 我想知道在我的应用程序中使用哪个框架或其他东西可以将条形码扫描仪与我的应用程序集成 是否有任何 API 或示例或教程等可以
  • 如何使用 Android 的 NDK 使用 mkfifo

    最近我升级了 NDK 现在我的应用程序因缺少符号而崩溃mkfifo E dalvikvm 2031 dlopen data app lib mylib so failed Cannot load library soinfo relocat
  • 如何使用JS获取h1标签的值?

    我有 3 个页面 其中 2 个页面是 WordPress 页面 另外 1 个是带有表单的自定义页面模板 这两个页面是使用 wp job manager 插件创建的 第一页有一个下拉菜单并包含职位列表 第二页是职位描述 现在 我想在用户单击输
  • 获取oracle中索引的完整ddl

    我使用的是 Oracle 11g 12c 我想获取数据库中索引的 ddl 为此 我使用了查询 SELECT DBMS METADATA GET DDL INDEX SYS IL0000091971C00001 CCEEXPERTS FROM
  • 我如何要求此 Django 视图使用 HTTPS?

    r login django contrib auth views login template name login html authentication form CustomAuthenticationForm 如何添加所需的 HT
  • 使 Moose 构造函数忽略 undef 参数

    哈希表是 Perl 对象的典型初始化器 现在您的输入是不可靠的 因为您不知道对于任何给定的键是否有定义的值 也不知道该键是否存在 现在 您想要将此类不可靠的输入提供给 Moose 对象 虽然缺少键完全没问题 但您确实希望摆脱未定义的值 这样
  • 平台调用语句中 DLL 的相对路径

    我正在使用 VS 2008 开发一个使用 dll 和 P Invoke 的应用程序 当我使用绝对路径时 我可以成功使用该dll 例如 这确实有效 DllImport C myDLL dll 内部静态外部布尔 isReady 这不起作用 Dl
  • 我的 openssl 和 ssl 默认 CA 证书路径是什么?

    背景 我正在尝试与外部供应商创建 SSL 上下文连接以进行握手 然后通过该连接使用 xml 进行通信 clientCert path cert path clientKey path key path PROTOCOL ssl PROTOC
  • 在组件中的“伪构造函数”与“函数 init()”中使用 CFML 代码时

    给定例如的伪构造函数在 CFML 中 component Pseudo Constructor start here comes some cfml scripting code Pseudo Constructor end functio
  • “IconDefinition”类型的参数不可分配给“IconDefinitionOrPack”类型的参数

    我在用着Angular 6 角度启动器 https github com gdi2290 angular starter和fontawesome 跟随here https github com FortAwesome angular fon
  • 并行运行多个 R 函数

    我有一个数据集 其中包含很少的数字列和超过 1 亿行的 data table 对象 我想根据其他列对某些列进行分组操作 例如 对 d 列中每个类别的 a 列的唯一元素进行计数 my data a count uniqueN col a co
  • 即使在 Monitor.Enter 之后,Monitor.TryEnter 也始终返回 true

    我想我错过了一些关于正确行为的事情Monitor Enter and Monitor TryEnter 这是我编写的一段代码 用于将问题与其余代码分开 object lockObj new object bool result Monito