Monitor.Pulse 和 Monitor.PulseAll 之间的区别

2023-12-29

Monitor.PulseAll通知所有等待线程在队列中。

Monitor.Pulse通知a thread在等待队列中。 (下一个等待线程)

只有下一个线程(一个线程)才能获取锁。那么区别是什么呢?

我应该什么时候使用Pulse vs PulseAll?


Use PulseAll当您想要唤醒多个线程时,因为它们正在等待的条件现在可能已满足多个线程。 (等待几乎总是与一个条件相关 - 你通常应该在一个while loop.)

Use Pulse当您只想唤醒一个线程时,因为实际上只有一个线程能够执行有用的工作。

举两个比喻:

想象一下您只有一台打印机。一次只有一个人可以使用它,因此如果有很多人在等待,您可以让他们都入睡 - 但当打印机空闲时您只能唤醒一个人。这反映了使用Pulse.

现在想象一下你经营一家商店。关门时,顾客会在店外等候。当您开店时,您不仅仅是想叫醒一位顾客 - 他们现在都可以进来了。这反映了使用PulseAll.

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

Monitor.Pulse 和 Monitor.PulseAll 之间的区别 的相关文章

随机推荐

  • OpenCV warpPerspective - 如何知道目标图像大小?

    好吧 我不得不承认我是 OpenCV 的新手 而且我的 MATLAB lin 代数知识可能会引入偏见 但我想做的事情其实很简单 但我仍然没有找到答案 当尝试在透视变换下校正图像 或图像的一部分 时 您基本上执行两个步骤 假设您有定义扭曲对象
  • 由于字符串变量包含引号,导致 bash 脚本中的 Curl 命令出现问题 [重复]

    这个问题在这里已经有答案了 我正在 bash 脚本中执行curl 命令 问题是在curl命令中我必须传递一些变量 summary description 但由于这些变量位于单引号 中 因此不会分配变量 仅供参考 我无法删除单引号 也无法用双
  • 我们如何使用 Excel 宏 (vba) 中的 Restful API?

    是否有一个插件或库可用于从 Excel 访问 Restful API 可能使用宏 然后将响应存储在某处 可能在工作表中 请原谅缺少的示例代码 我不是 VBA 程序员 您可以使用MSXML https msdn microsoft com e
  • RODBC sqlSave 问题

    我在使用 RODBC 将数据框插入 mySql 数据库时遇到一些困难 下面是我正在使用的代码 data lt data frame analysedDataID c 1 2 3 plateWell c a b c screenPlateOr
  • xslt 中的 cdata for html

    我有一个生成纯 HTML 的 XSLT 文件 我需要将一些元素包装在 CDATA 块中 因此打算使用 cdata section elements 但是 如果我想要包含 CDATA 的元素只有一个 p 在页面上 如何才能不将 CDATA 放
  • 如何在右键单击 Qdoublespinbox 上向 QtCore.Qt.Default ContextMenu 添加操作?

    我使用 Qt Designer 开发了一个相当复杂的 GUI 工具 有关该工具的更多详细信息 请参阅 https github com 3fon3fonov trifon https github com 3fon3fonov trifon
  • “带 WWW 的 URL 和不带 WWW 的 URL”-它们之间有什么区别吗?

    我注意到一件事 当在任何浏览器中打开某些网站时 然后在 URL 栏中打开一些网站 就像 http www something com 有些就像 http something com 这里缺少www 我的博客网址也发生了同样的事情 如果我在网
  • 添加到 swift 数组会不断覆盖最后一个对象

    我想不断向全局 常量数组添加值 问题是它只是不断覆盖最后一个值而不是将其添加到数组中 所以我总是得到 2 个值 全局数组 struct Globals struct savedCalculationData static var dataA
  • Markdown - 一行中的多个复选框

    我在 github 评论中遇到了 markdown 问题 item 1 item 2 使用上面的代码 只有第一个复选框是可以的 The 文档 https help github com articles writing on github
  • 通用: ArrayList 的 ?在 Java 中扩展 ISomeInterface

    我在以下代码中遇到一些问题 public ArrayList
  • 页面 PG_referenced 与 PG_active 位?

    我正在阅读有关页面和内存分配的内容 发现 PG referenced and PG active但我不清楚有什么区别 我知道 PG active 在访问页面时设置并每隔一段时间清除一次 但这有什么不同PG referenced 怎么可能一个
  • 分支之间的Git引用冲突(无法更新本地分支)

    我在尝试时遇到以下错误git 获取远程分支 错误 Ref refs origin remotes my branch 位于一些哈希值但预计另一个哈希值来自 github com 我的存储库 一些哈希值my branch gt origin
  • 是否有实用的方法来确定正在使用哪些 JCE 加密提供商?

    我们已将 Java 产品配置为仅使用经过 FIPS 验证的 RSA JCE 加密提供程序 但是 该产品将无法工作 当onlyRSA 库列在 java security 中 因此 某些内容正在向其他提供商请求非 FIPS 算法 通过排除过程
  • ClickOnce 发布后 WPF 应用程序崩溃

    我在 ClickOnce 发布 WPF 应用程序时遇到问题 如果应用程序已构建 调试或发布 则它运行正确 ClickOnce 发布的应用程序崩溃 我尝试更改目标平台 有时这种改变有助于解决问题 但并非每次都会 20 例中有 1 例 我有 V
  • 查找特定的 CSS @keyframes 规则

    我想调整一个具体的 keyframes 用 JavaScript 在我的 CSS 中规则 这一切都与以下代码配合得很好 CSS webkit keyframes changecolor 0 color red 100 color green
  • 节点:在 Debian 上找不到命令

    所以 我在 Mac 上工作 作为网络服务器 我安装了 Debian 8 但是 我目前正在开发一个节点应用程序 该应用程序大部分时间都是在本地主机上开发的 一切正常 我可以使用node index js没有问题 然而 我通过node js网站
  • 测试两条线是否相交 - JavaScript 函数

    我尝试寻找一个 javascript 函数来检测两条线是否相交 该函数将获取每条线 我们将其称为线 A 和线 B 的两个起点的 x y 值 就是如果相交则返回 true 否则返回 false 函数示例 如果答案使用矢量对象 我很高兴 Fun
  • jQuery 下拉列表更改事件不触发

    我编写 Asp Net MVC 应用程序 想要实现级联下拉列表功能 但我对 jQuery 更改事件有问题 我哪里错了 JavaScript Content jquery 1 4 1 js gt gt
  • Fabric.js 画布上的多个剪切区域

    制作照片拼贴制作器 https editphotosforfree com 我使用 Fabric js 它具有基于对象的裁剪功能 这个功能很棒 但剪切区域内的图像无法缩放 移动或旋转 我想要一个固定位置的剪切区域 并且图像可以根据用户的需要
  • Monitor.Pulse 和 Monitor.PulseAll 之间的区别

    Monitor PulseAll通知所有等待线程在队列中 Monitor Pulse通知a thread在等待队列中 下一个等待线程 只有下一个线程 一个线程 才能获取锁 那么区别是什么呢 我应该什么时候使用Pulse vs PulseAl