thrd_busy 和 mtx_lock()/mtx_timedlock()

2024-03-24

我对 C1x 互斥体有以下问题(§7.25.4):

哪些情况可以mtx_lock() return thrd_busy而不是阻塞?哪些情况可以mtx_timedlock() return thrd_busy?

注意thrd_busy在 §7.25.1 ¶5 中定义为返回“当测试和返回函数请求的资源已在使用中时".

我希望thrd_busy仅返回mtx_trylock(),或者至多也由mtx_lock()当用 a 调用时mtx_try or mtx_try | mtx_recursive互斥体,但绝对不是来自mtx_timedlock(),这需要一个支持超时的互斥体,即mtx_timed or mtx_timed | mtx_recursive mutex.

这是否是草案的公正和疏忽?或者我错过了什么?


如果互斥锁不是递归的,但您尝试以递归方式锁定它,则行为未定义。但是,实现可以检测到这一点并返回thrd_busy。 (或者,它可能永远阻塞,或者返回thrd_error, or thrd_success,或者格式化你的硬盘......)

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

thrd_busy 和 mtx_lock()/mtx_timedlock() 的相关文章

随机推荐

  • ggplot 中的欧洲/法国千位分隔符

    我正在尝试格式化 ggplot 图中的 y 轴 并使用空格 而不是逗号 作为千位分隔符 大约是 10 000 而不是 10 000 我在 中找不到它scale y continuous help 感谢您的任何提示 正如 David 和 jo
  • Xcode 4 调试

    自从迁移到 Xcode 4 以来 我对调试视图完全感到困惑 因为我无法看到数组 字典等的值 在 Xcode 3 下我可以查看调试控制台并查看存储的实际值 调试信息现在出现在调试导航器 http developer apple com lib
  • 在 Visual Studio 中删除折叠区域和摘要周围的框

    我正在使用 VS2010 我想在压缩区域和 或摘要时更改它们的字体样式 主要是为了删除这些部分周围的边框 因为在滚动代码时它会变得分散注意力 我浏览了 字体和颜色 和其他选项 但找不到任何明显可以让我更改它的内容 这个字体可以自定义吗 如果
  • 如何在不使用 strlen() 的情况下查找 php 中的字符串长度?

    如何在不使用 php 的情况下找到字符串的长度strlen 我知道这是一个很老的问题 但这段代码对我有用 s string i 0 while s i i print i
  • 将 void 函数模板专门化为 const char[N]

    我有一个我想要专门化的模板化函数foo to const char N 硬编码字符串 template
  • 购物车和各种折扣。将折扣存储在数据库中并将其应用于订单计算

    目前 我正在寻找对购物车 订单 应用折扣 的最佳实践 因此 我计划实施此类折扣 固定用户折扣 例如 我想给我最喜欢的客户 10 的折扣 商品数量折扣 例如 您购买 10 支不同颜色的钢笔 您将获得 1 5 的折扣 优惠券折扣 例如 在促销活
  • CanCan :read 和 [:index, :show] 之间的区别吗?

    根据所有文件 read动作是两者的别名 index and show alias action index show to gt read 但是 请考虑以下使用嵌套资源的场景 resources posts resources commen
  • 类型错误:无法解压不可迭代的 int 对象

    运行我的代码后 如何解决此错误 如下所示 我正在使用下面的函数并在其上实现运行窗口 for 循环 但最终出现以下错误 for 循环工作并在某个时刻挂起 def get grps s thresh 1 Nmin 3 Nmin int gt 0
  • 使用 jQuery 删除仅包含空格的元素

    有没有办法删除这个 p p 使用 jQuery Try p filter function return trim this text this children length 0 remove 它的作用是找到所有 p 其中没有任何内容 并
  • Linux 检索监视器名称

    情况 我正在使用多个监视器 并且我想在 bash 中获取它们的名称 目前我使用的是 Ubuntu 10 04 我知道xrandr 从中我只能得到统计数据 我想要的是读取数组中的所有监视器名称以使用它们 有没有一种明确的方法可以做到这一点 而
  • 将 Mercurial hgsubversion 扩展与 SVN 外部结合使用

    我正在使用 Mercurial 与 Subversion 存储库进行通信 并且该存储库当前正在使用 SVN 外部来拉入另一个存储库 hgsubversion与存储库通信的效果非常好 但它似乎不适用于 SVN 外部 有没有办法配置它来处理这个
  • 当我的脚本导入模块 pikepdf 和 pdfminer3 时,如何修复 pyinstaller“无名为...”的错误?

    我使用 PikePDF 和 PDFminer3 构建了一个有效的 py 脚本 它将从我的桌面上获取 PDF 并根据可用的单词创建一个 txt 文件 这样做的目的是帮助我的工作团队修改通常无法复制粘贴修改 因此必须手写 的法律文件 由于我的大
  • AVPlayer 可以从 API 端点正确传输视频文件吗?

    我有一个 Xamarin iOS 应用程序 我想从支持 HTTP 范围请求的 API 端点流式传输视频 我已经在这里查看了许多类似的问题 但无论我尝试什么 我似乎都无法让 AVPlayer 在完全下载之前开始播放视频文件 我试过了 KVO
  • kubernetes 节点选择器正则表达式

    我正在尝试在具有类似标签的节点上部署 Podes 节点 数据 1 es 节点 数据 2 es 节点 数据 3 我可以使用 pod 节点亲和力规范中的所有标签 但我只想使用单个标签条目作为es 节点 数据 以便它部署在所有节点上 这可能吗 我
  • Lambda S3Event 的 AWS 开发工具包 V2 类是什么?

    For the Java SDK V1 I have a lambda function like this public static void doSomethingLambda S3Event s3Event throws Excep
  • 更新数据库 - 列不存在

    当我尝试使用时update database verbose force 我收到错误 ALTER TABLE DROP COLUMN failed because column countReferralsRegistrations doe
  • 使用音频队列框架录制的数据格式

    我正在编写一个 iPhone 应用程序 它应该记录用户的声音 并将音频数据输入到库中进行修改 例如改变速度和音调 我从 Apple 的 SpeakHere 示例代码开始 http developer apple com library io
  • 如何将点的图形属性添加到最终的点输出中

    我在 python 项目中使用 NetworkX 库创建图形表示 制作有向图我需要向我们的图输出添加一个属性 等级目录 LR 所以我正在编写代码 import networkx as nx graph nx DiGraph rankdir
  • git 克隆本地主机?

    我不太喜欢 ubuntu 但我成功地在我的客户端上设置了 git 并在服务器上设置了 gitosis 这是我引以为傲的 我将本地 ssh 公钥添加到 gitosos 的授权密钥中 并且可以克隆 推送 提交等 从我的本地计算机到服务器 一切都
  • thrd_busy 和 mtx_lock()/mtx_timedlock()

    我对 C1x 互斥体有以下问题 7 25 4 哪些情况可以mtx lock return thrd busy而不是阻塞 哪些情况可以mtx timedlock return thrd busy 注意thrd busy在 7 25 1 5 中