通过推送通知唤醒

2024-05-15

Suppose:

  • 有一些对象(例如,一个数组a)和依赖于对象的条件(例如,a.empty?).
  • 当前线程以外的某些线程可以操作该对象(a),因此条件评估值的真实性会随着时间的推移而变化。

如何让当前线程在代码中的某个时刻休眠,并在条件满足时通过推送通知继续(唤醒)?

我不想像这样进行轮询:

...
sleep 1 until a.empty?
...

也许使用Fiber将是一个线索。


也许我不太明白你的问题,但我想ConditionVariable是解决此类问题的好方法。

So, ConditionVariable可用于在发生某些情况时向线程发出信号。让我们来看看:

require 'thread'

a = [] # array a is empty now
mutex = Mutex.new
condvar = ConditionVariable.new 

Thread.new do
  mutex.synchronize do
    sleep(5)
    a << "Hey hey!"
    # Now we have value in array; it's time to signal about it
    condvar.signal
  end
end

mutex.synchronize do
  condvar.wait(mutex)
  # This happens only after 5 seconds, when condvar recieves signal
  puts "Hey. Array a is not empty now!"
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过推送通知唤醒 的相关文章

  • 在c99中使用__thread

    我想使用 thread 存储类定义一些特定于线程的变量 但三个问题让我犹豫不决 它真的是c99的标准吗 或者更重要的是 编译器支持有多好 变量会在每个线程中初始化吗 非多线程程序是否将它们视为普通的旧全局变量 回答您的具体问题 不 它不是
  • 线程独占数据:如何存储和访问?

    NET 中是否有可能将对象实例绑定到线程的当前执行上下文 这样在代码的任何部分我都可以做类似的事情CurrentThread MyObjectData DoOperation 并确保我访问特定于线程的数据 谢谢 你可以看一下线程静态属性 h
  • 检测您何时进入/退出 Xamarin.iOS 中的主线程

    Xamarin MonoTouch 有没有办法检测主线程中是否正在调用代码 我正在寻找类似于Java的东西EventQueue isEventDispatchThread 我发现 Swing 编程很方便assert时不时 或有时assert
  • ruby 1.9.1 的 gem install mongrel 失败

    昨天我开始了 Rails 开发 我安装了 ruby 1 9 1 rubygems 和 Rails 跑步gem install mongrel工作得很好 表面上也安装了杂种 我有点困惑 因为 script server 默认启动 webric
  • 在 Rails 中强制内联渲染 PDF 文档

    我正在编写一个从一组 XML 文件生成 PDF 文件的服务 正在正确生成 PDF 但是 每次我单击 查看 PDF 链接时 浏览器都会要求用户下载 PDF 文件 我需要 PDF 内联显示 就像任何常规 HTML 页面一样 我虽然我写的代码是正
  • 无法在 IE 上运行 Selenium 脚本

    我必须在 IE 10 浏览器上运行 Selenium 测试 为了运行以下脚本 我执行了以下操作 下载IEDriverServer 64位 因为我的机器是64位 here http code google com p selenium dow
  • 为什么我的代码在编译用于分析 (-pg) 时在多线程下运行比在单线程下运行慢?

    我正在写一个光线追踪器 最近 我在程序中添加了线程 以利用 i5 四核上的附加内核 奇怪的是 应用程序的调试版本现在运行速度变慢 但优化后的构建运行速度比添加线程之前更快 我将 g pg 标志传递给 gcc 以进行调试构建 并将 O3 标志
  • 使用 volatile bool 强制另一个线程等待是否安全? (C++)

    我读到的有关 volatile 的所有内容都说它永远不安全 但我仍然倾向于尝试它 而且我还没有看到这种特定场景被宣布为不安全 我有一个单独的线程来渲染场景 从主模拟线程中提取数据 这没有同步 并且工作正常 问题是 当程序退出时 渲染器需要停
  • Ruby 解释器出现段错误后,是否可以从 corefile 中获取 Ruby 回溯?

    Note 我使用了在使用 libxml ruby gem 时遇到的段错误来说明问题 但我已经用所述 gem 解决了我的问题 这个问题真正涉及的是从 gdb 使用 corefile 查看 Ruby 回溯 即解释器在 Ruby 代码无法处理异常
  • Ruby 模板:如何将变量传递到内联 ERB 中?

    我有一个内联到 Ruby 代码中的 ERB 模板 require erb DATA a gt HELLO b gt WORLD template ERB new lt lt EOF current key is current value
  • 了解 Ruby 的加载路径

    我有点困惑为什么我的项目无法加载它需要的文件 这是一个非常简单的项目树 processor bin lib processor rb processor mapper rb reducer rb and my processor rb文件看
  • 从外部 gem 增强模型

    我在用着炼油厂CMS http refinerycms com 在我们的网站上让较少的技术人员更新内容 在 gem 内部 它们有一个 Page 类 用于映射站点上的每个顶级页面 我想在这个 Page 类上使用acts as taggable
  • ruby 包含问题

    class Foo def initialize a puts Hello a end end module Bar def initialize b puts b World end end class Sample lt Foo inc
  • IO 错误:从读取调用中得到负一

    我的时间和想法都快用完了 我需要使用 Java 和 Oracle 数据库模拟预订整架飞机 我们有一些关于如何执行此操作以及预期内容的说明 但我们的代码始终出现这种非常奇怪和意外的行为 数据库看起来像这样 我们需要有一个不断运行的线程池来模拟
  • 如何在 Rails 3 项目中包含 SSL 证书

    我开发了一个 Rails 3 项目 它使用thin作为服务器 与 Devise 和 Doorkeeper 一起进行身份验证 我想在我的项目中添加 SSL 证书 我看过一些描述如何在 Rails 3 项目中使用 SSL 证书的帖子 但没有一个
  • Ruby/Rails - 访问“查找”表而不对其进行建模?

    这是针对 Ruby on Rails 3 0 x 项目的 我有一个 查找 表 其中包含来自供应商的数据 当我从其他来源导入数据时 我想检查此表 加入 SKU 以获取额外数据 在我的应用程序中为该表创建模型对我来说似乎不合适 我的应用程序永远
  • ActiveRecord 嵌套 SELECT——我可以在没有手动 SQL 的情况下完成它吗?

    我有一张桌子 上面有 除其他外 一个名字和一个等级 我想返回所有唯一名称的集合 但对于返回的每个名称 我想选择排名最高的行 这很简单 有两个嵌套的 SELECT 语句 SELECT FROM SELECT FROM foo ORDER BY
  • 如何查看移动设备是否已注册

    我正在使用适用于 Amazon SNS 的 Amazon AWS Ruby SDK 但在已注册的设备方面遇到一些问题 有时 当设备再次注册时 我会收到类似错误AWS SNS Errors InvalidParameter Invalid p
  • 使用 Visual Studio Express 2010 表单应用程序进行 C++ 多线程处理

    我正在开发一个 Windows 窗体应用程序 它连接到一个硬件 获取大量数据 1 GSample 秒 对其进行处理 然后单击按钮将其输出到屏幕上 我现在尝试在一个可以随时启动 停止的循环中自动化该过程 以便我可以在调整采集硬件的输入的同时对
  • PyQt 中的线程和信号问题

    我在 PyQt 中的线程之间进行通信时遇到一些问题 我使用信号在两个线程 发送者和监听者 之间进行通信 发送者发送消息 期望被监听者接收 但是 没有收到任何消息 谁能建议可能出了什么问题 我确信这一定很简单 但我已经环顾了几个小时但没有发现

随机推荐

  • ”类型的对象定义转换“py2rpy”' aria-label='Django 中的 Rpy2 错误 - 未为“”类型的对象定义转换“py2rpy”'> Django 中的 Rpy2 错误 - 未为“”类型的对象定义转换“py2rpy”

    我以前从未使用过 R 并且正在尝试使用 rpy2 从 python 调用 R 函数 它可以在独立的 python 终端上运行 但不能在 Django 中运行 但rpy2似乎无法将python字符串转换为r对象 我正在使用同事提供的自定义库
  • 如何找到排列的索引

    index List Idx Predicate will get List with permutation and I want to know index of permutation For example index 4 1 3
  • Youtube Iframe API 不适用于移动设备?

    我很困惑 Youtube Iframe API 与标准示例 https developers google com youtube iframe api reference hl de https developers google com
  • 如何对我的自定义验证属性进行单元测试

    我有一个自定义的 asp net mvc 类验证属性 我的问题是如何对其进行单元测试 测试类是否具有该属性是一回事 但这实际上并不能测试其中的逻辑 这就是我想测试的 Serializable EligabilityStudentDebtsA
  • 删除向量类成员

    我有一个 A 类 其成员是另一个 B 类的对象指针向量 class A std vector
  • 在下载整个文件之前是否可以知道 MP3 的持续时间?

    这是一个关于MP3文件格式的问题 我一直在寻找一种获得 MP3 持续时间的方法 由于我使用 JLayer SPI 来解码 MP3 我发现在音频源是文件的情况下这是可能的 AudioFileFormat fileFormat AudioSys
  • 如何检查 $row['column_name'] 是否返回空 php mysql

    我有一个带有列的表格 id name phone describe 当我从这个表中获取值时 我正在使用 row mysql fetch array query 现在我想检查是否 row describe 返回空值 如何查看php 您可以使用
  • 在 Clearcase 上使用 Mercurial 时保留历史记录

    我在 ClearCase 商店工作 CC 在集成团队的工作方面做得很好 尽管我们的代码审查流程阻止我使用它来跟踪我的日常更改 在我的 CC 视图之上创建 hg 存储库效果非常好 我可以跟踪我的更改并轻松在文件服务器上进行备份 为人们生成差异
  • 多种语言的多种字体

    我最近在开发应用程序时遇到了一种情况 我必须在文本视图中显示不同的语言 目前我正在展示一些使用字体 字体像这样 Typeface tf Typeface createFromAsset this getAssets DroidHindi t
  • Rails:CSRF 令牌不工作但已设置

    我在 Heroku 上有我的 Rails 3 应用程序 当我发送银行信息时 我得到 WARNING Can t verify CSRF token authenticity但我的 CSRF 令牌已设置 https gist github c
  • 两个整数乘积的模

    我必须找到c c a b mod m a b c m 是 32 位整数 但 a b 可以超过 32 位 我正在尝试找出一种计算 c 的方法 而不使用 long 或任何 gt 32 位的数据类型 有任何想法吗 如果m是质数 事情可以简化吗 注
  • 用 C++ 生成 AST

    我正在用 C 制作一个解释器 到目前为止我已经有了词法分析器来生成标记 问题是我不确定如何生成 行走 解析树 我正在考虑使用数组数组来制作解析树 但我不确定如何以正确的顺序将标记实际插入到解析树中 我不确定是自上而下 左右还是自下而上 左右
  • Quarkus / CDI 和“java config”DI 定义

    我刚刚开始 quarkus 概念验证 容器启动时间太棒了 现在 我正在研究依赖注入部分 并找出选项 https quarkus io blog quarkus dependency injection https quarkus io bl
  • 为什么可以更改 const char* 变量的值?

    为什么下面的 C 代码可以工作 const char str NULL str test str test2 既然str是一个指向常量字符的指针 为什么我们可以给它分配不同的字符串文字呢 此外 我们如何保护str不被修改呢 例如 如果我们后
  • 没有端点在 net.pipe://localhost/ 上监听

    我有两个 WCF 服务托管在 Windows Server 2003 计算机上的单个 Windows 服务中 如果 Windows 服务需要访问任一 WCF 服务 例如发生定时事件时 它将使用公开的五个命名管道端点之一 不同的服务协定 该服
  • 如何使用 winforms 在 vb.net 中制作大型按钮网格(24x20 或类似)?

    我正在 vb net WinForms 中制作一个座位预订系统 我需要用户能够选择他们想要使用的座位并改变颜色 这样他们就可以知道它已选择 我开始尝试使用按钮 但 480 个按钮严重减慢了表单的加载时间 然后我尝试了在行 列中带有按钮的数据
  • onclick 函数上的 CSS 选择器

    有没有办法让CSS选择器onclick function 您可以在onclick https stackoverflow com questions 24365416 select element which have specific a
  • 快速约会算法

    我在一家咨询公司工作 大部分时间都在客户所在地 正因为如此 我很少见到同事 为了更好地了解彼此 我们将安排一个晚宴 会有很多小桌子 方便人们聊天 为了在聚会期间与尽可能多的不同的人交谈 每个人都必须每隔一段时间 比如每小时 换一张桌子 如何
  • Python:使用 string.format() 将单词大写

    是否可以使用字符串格式将单词大写 例如 user did such and such format user foobar 应该返回 Foobar 做了这样那样的事情 请注意 我很清楚 capitalize 但是 这是我正在使用的代码 非常
  • 通过推送通知唤醒

    Suppose 有一些对象 例如 一个数组a 和依赖于对象的条件 例如 a empty 当前线程以外的某些线程可以操作该对象 a 因此条件评估值的真实性会随着时间的推移而变化 如何让当前线程在代码中的某个时刻休眠 并在条件满足时通过推送通知