递归锁

2024-03-03

是否有递归锁的用例?是否存在绝对需要递归锁的场景。

使用起来似乎很复杂且危险。我可以看到我们可以避免死锁(只要锁堆栈不溢出),但我们不想捕获这样的问题吗?

也许我在这里遗漏了一些东西。任何指示表示赞赏。

提前致谢。


我喜欢这个博客条目的标题:

递归锁会杀了你 http://www.fieryrobot.com/blog/2008/10/14/recursive-locks-will-kill-you/

我也喜欢这句话:

http://www.thinkingparallel.com/2006/09/27/recursive-locks-a-blessing-or-a-curse/ http://www.thinkingparallel.com/2006/09/27/recursive-locks-a-blessing-or-a-curse/

不要使用递归互斥体。这类似于使用用过的避孕套进行性行为。

最后,这是一篇非常有趣的文章,介绍了递归锁最初是如何进入 Posix pthread 的:

递归互斥锁是一种黑客手段。使用它们并没有什么问题, 但它们是拐杖。腿断了还是图书馆断了?很好,使用 拐杖。但至少要知道你正在使用拐杖,以及为什么;和 偶尔检查一下腿(或图书馆)以确保您仍然 需要拐杖。如果没有痊愈,就去看医生,因为 那不行。当你别无选择时,使用并不可耻 拐杖...但是你不能靠拐杖跑得很好,而且你也会 放慢任何依赖你的人的速度。

递归互斥锁是构建线程支持原型的绝佳工具 在现有的库中,正是因为它可以让您推迟困难 部分:库的调用路径和数据依赖分析。但 出于同样的原因,永远记住,你还没有完成,直到 它们都消失了,所以你可以创建一个你引以为豪的库, 不会不必要地限制整个并发 应用。

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

递归锁 的相关文章

  • 时间序列数据预处理 - numpy strides 技巧以节省内存

    我正在预处理一个时间序列数据集 将其形状从二维 数据点 特征 更改为三维 数据点 时间窗口 特征 在这样的视角中 时间窗口 有时也称为回顾 指示作为输入变量来预测下一个时间段的先前时间步长 数据点的数量 换句话说 时间窗口是机器学习算法在对
  • 如何在文件系统中存储图像

    目前 我已将图像 最大 6MB 作为 BLOB 存储在 InnoDB 表中 随着数据大小的增长 夜间备份变得越来越慢 阻碍了正常性能 因此 二进制数据需要进入文件系统 指向文件的指针将保存在数据库中 数据具有树状关系 main site u
  • 公式的后序遍历

    在数据结构中 我将按顺序转换和预排序公式转换为树 不过 我不太擅长后期订购 对于给定的公式x y z a b c 我想出了 divide x c y z a b 在大多数情况下 这似乎很合适 除了左子树中的 是牌组中的小丑 在后序遍历中 最
  • 迭代和遍历有什么区别?

    过去几周我一直在学习迭代器 我仍然不明白迭代链接列表和遍历链接列表之间的主要区别 我知道遍历意味着遍历 访问每个元素 链接列表 并且在迭代时基本上做同样的事情 但是有什么不同 为什么不能遍历所有内容 标准库数据结构 遍历 只是意味着遍历数据
  • Scheme (Lisp) 中树的深度反转

    我对Scheme中的基本树数据结构进行了深度逆向 define deep reverse t cond null t not pair t t else cons deep reverse cdr t deep reverse car t
  • 如何将多个值存储到一个键(java)

    我搜索一个可以存储多个键值对的数据结构 数据基本上是这样的 1 value 1 2 value 2 于是我想到了使用HashMap 遗憾的是 这对我不起作用 因为一个键可能会出现多个值 在上面的例子中 1 value 2 可能是另一个条目
  • 在大文件中查找重复项

    我有一个非常大的文件 大约有 1500 万个条目 文件中的每一行都包含一个字符串 称为键 我需要使用 java 查找文件中的重复条目 我尝试使用哈希图并检测重复的条目 显然 这种方法向我抛出了 java lang OutOfMemoryEr
  • python数据结构(类似设置)在添加重复项时抛出异常

    我正在寻找一种在添加重复元素时会引发异常的数据结构 我发现的最接近的是collections Counter gt gt gt from collections import Counter as counter gt gt gt c co
  • 计算机如何评估巨大的数字?

    例如 如果我输入一个值 1234567 98787878 Wolfram Alpha 可以为我提供许多细节 这包括小数近似 总长度 最后一位数字等等 您如何评估如此大的数字 据我了解 编程语言必须具有特殊的数据类型才能存储数字 更不用说将其
  • C++:二叉树所有节点值的总和

    我正在准备面试 我被一个二叉树问题困住了 我们如何计算二叉树所有节点中存在的值的总和 优雅的递归解决方案 伪代码 def sum node if node NULL return 0 return node gt value sum nod
  • 如何在内存中存储分子?

    我想将分子存储在内存中 这些可以是简单的分子 Methane CH4 C H bond length 108 7 pm H H angle 109 degrees But also more complex molecules like p
  • XML 模式文件中 xs 和 xsd 之间的区别?

    两者有什么区别xs and xsdXML 模式文件中的前缀 From w3 org 上的 XSD 1 0 规范 http www w3 org TR xmlschema 1 Instance Document Constructions 模
  • Java 中类似 HashMap 的可排序数据结构?

    Java 中是否有某种类似于 HashMap 的数据结构 可以按键或值排序 在 PHP 中 您可以拥有可排序的关联数组 Java中有这样的东西吗 HashMaps 几乎按照定义是未排序的 一个好的哈希函数会产生看似随机的密钥分布 如果你想使
  • 给定一个数字 0-9 的数组和一个整数 n,找到可由输入数组组成且小于 n 的所有整数

    问题是这样的 给你一个数字 0 9 的数组和一个整数n 该数组可能包含任何给定数字的重复项 找到所有可以通过连接输入数组中的数字形成的整数并且小于n 输入数组中的数字可以在输出的元素中重复 例如 输入为 2 5 8 且 n 223 则输出应
  • 在现实生活中,您会使用 heapq Python 模块做什么?

    读完吉多的书后使用 Python 对 2MB RAM 中的一百万个 32 位整数进行排序 http neopythonic blogspot com 2008 10 sorting million 32 bit integers in 2m
  • 如何防止 Nil 将容器恢复为其默认值?

    我正在实现一个简单的链表并表示没有下一个节点的事实 我正在使用该值Nil 问题是当分配给容器时 Nil将尝试将容器恢复为其默认值 这意味着我需要使用容器的默认值或Any确定是否已到达链表的末尾 不过 我还是想用Nil 如果只是为了其明确的意
  • 在树结构的 Big-O 表示法中:为什么有些来源引用 O(logN),有些来源引用 O(h)?

    在研究遍历二叉搜索树的任何算法的复杂性时 我看到两种不同的方式来表达同一件事 版本 1 最坏情况下的遍历算法对树的每个高度进行一次比较 因此复杂度是O h 版本 2 最坏情况下的遍历算法对树的每个高度进行一次比较 因此复杂度是O logN
  • 良好的类似 STL 的 C 库 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 对于具有向量 双端队列 堆栈 哈希图 树形图 集合等数据结构的 C 语言来说 有哪些好的库 请使用纯 C 并且与平台无关 The Glib
  • 从二叉堆中查找第 k 个最小元素的 O(klogk) 时间算法

    我们有一个 n 节点二叉堆 其中包含n不同的项目 根部的最小项目 为一个k lt n 发现O klogk 时间算法选择kth堆中的最小元素 O klogn 很明显 但无法找出O klogk 一 也许我们可以使用第二个堆 但不确定 好吧 你的
  • 双向链表转 JSON

    我有一个三维结构 实际上是一个具有六个节点的双向链表 即左 右 上 下 进 出 如果一个节点位于另一个节点的右侧 那么该节点将毫无疑问位于第一个节点的左侧 喜欢 实际上这是一个 3D 结构 但为了便于理解 我给出了一个 2D 示例 现在我必

随机推荐

  • 异步双向 RPC

    我正在寻找使用 TCP 的 Java 或 Python 首选 Python 的 RPC 库 它应该支持 异步 双向 RPC 某种事件循环 带有回调或类似 有什么建议吗 我看过像 bjsonrpc 这样的东西 这似乎是正确的东西 但是服务器似
  • Cloudformation 模板在 UserData 完成之前完成部署

    在我正在部署的 CloudFormation 模板中 我在 UserData 块中运行长时间运行的操作 它看起来如下 UserData Fn Base64 Fn Join usr local bin mylongrunningscript
  • Mac OS Mavericks 上的 NPM 安装问题

    我正在尝试掌握 AngularJS NodeJS 和 Ruby on Rails 当尝试安装 yeoman grunt 等 npm 软件包时 我在终端中收到一个错误 如下所示 npm ERR Error EACCES open Users
  • 如何增加Google Cloud Platform后端服务配额?

    我正在使用 Kubernetes 并且正在尝试创建一个入口资源 http kubernetes io v1 1 docs user guide ingress html 我使用以下方法创建它 kubectl create f my ingr
  • 如何根据 AngularJS 中的角色和身份验证使用 ui-router 路由页面

    我是 javascript 和 angularjs 的新手 我想要为我的角度应用程序登录和角色 我已经编写了用于登录的java Rest api 当我使用用户凭据调用登录 API 时 它返回 TOKEN 和 ROLES 我还有 TOKEN
  • backbone.js Model.get() 返回未定义,范围使用咖啡脚本+咖啡烤面包机?

    我正在使用 Coffeescript 和咖啡烤面包机 一个很棒的用于拼接的 NPM 模块 编写一个应用程序 该应用程序构建了我的 app js 文件 我的许多应用程序类和模板都需要有关当前用户的信息 因此我有一个 User 类 扩展 Bac
  • 在windows和linux上用Python获取唯一的计算机ID

    我想在 Windows 和 Linux 上使用 Python 获得一个唯一的计算机 ID 它可以是 CPU ID 主板序列号 或其他任何内容 我查看了几个模块 pycpuid psi 但没有运气 关于如何做到这一点有什么想法吗 似乎没有直接
  • 在 div 中以与在文本区域中相同的方式包装文本

    我正在创建一个建议面板 同时实时编辑 HTML 文本区域 为了获取 x y 坐标 我使用放置在文本区域后面的隐藏 div 我获取了插入符位置 然后将插入符之前的文本加上 span 标记复制到隐藏的 div 中 然后我获取跨度坐标并将其提供给
  • 使用 XPath 选择 XML 节点时如何忽略名称空间

    我必须解析如下所示的 XML 文档
  • sqlite 准备好的语句已完成

    我有一个错误java sql SQLException 准备好的语句已完成当我第二次调用同一个 preparedStatement 时会发生这种情况 我在方法中调用它 这是数据库 Java 类 相关部分 create the charge
  • android.database.sqlite.SQLiteException:靠近“ORDER”:语法错误(代码1):,

    我不断收到此错误 我确信这是一个简单的语法错误 有人看到吗 我调试了大约 30 分钟 似乎找不到它 query DELETE FROM SuccessfulCalls ORDER BY id DESC LIMIT 2 要插入到数据库的实际代
  • 在 Android 中下载文件时“不幸的是,...已停止”

    我正在尝试在 Android Studio 中制作一个应用程序 它要求您将文件下载到用户设备上的 sdcard Download 文件夹中 问题是 当我输入要下载的 URL 并单击 下载 时 应用程序显示 不幸的是 已停止 我有很多文件 所
  • 使用python检查文件夹/文件ntfs权限

    正如问题标题可能暗示的那样 我非常想知道如何检查给定文件或文件夹的 ntfs 权限 提示 这些是您在 安全 选项卡中看到的权限 基本上 我需要的是获取文件或目录的路径 在本地计算机上 或者最好在远程计算机上的共享上 并获取用户 组的列表以及
  • Android 应用程序上的 UID 没有权限访问 URI 错误

    我正在构建一个简单的应用程序来选择图像或从相机中拍摄图像并裁剪它 但是 它向我抛出了这个错误 java lang SecurityException Uid 10076 does not have permission to uri 0 c
  • 使用 numpy 进行 blinn-phong 着色

    我正在尝试在 numpy 中实现 blinn phong 着色以用于教育目的 然而 我几天来一直在调试参数的作用 我的总体想法如下 由于方程是针对通道给出的 我将模型应用于每个颜色通道以获得通道中的相对像素强度 然后将通道重新组合在一起以获
  • 如何使用 PHPmailer 构建电子邮件队列?

    在插入表后 我已经使用 PHPmailer 构建了一个电子邮件脚本 但是 由于脚本超时 我收到了错误的网关 502 发送 300 多封电子邮件来响应网络请求对我来说听起来不是一个好主意 所以我的问题是如何构建一个在后台发送电子邮件的队列 据
  • 使用 MockContentResolver 查询导致 NullPointerException

    我们有一个 JUnit 测试类 它扩展了ActivityInstrumentationTestCase2
  • 全局捕获后台线程中 WCF 异步调用引发的异常

    我有一个与 WCF 服务通信的 WPF 应用程序 我目前正在使用以下命令从我的 ViewModels 调用我的 WCF 服务 我正在使用 MVVM 模式 async基于模式 public async override void MyComm
  • 从标注器获取附加信息(主动/被动、时态...)

    我正在使用斯坦福标记器来确定词性 但是 我想从文本中获取更多信息 是否有可能获得更多信息 例如句子的时态或是否处于主动 被动状态 到目前为止 我正在使用非常基本的 PoS 标记方法 List
  • 递归锁

    是否有递归锁的用例 是否存在绝对需要递归锁的场景 使用起来似乎很复杂且危险 我可以看到我们可以避免死锁 只要锁堆栈不溢出 但我们不想捕获这样的问题吗 也许我在这里遗漏了一些东西 任何指示表示赞赏 提前致谢 我喜欢这个博客条目的标题 递归锁会