Ruby 多线程 : making one thread wait for a signal from another

标签 ruby multithreading

在Ruby 中,我希望同时运行两个线程,并希望后台线程定期向前台线程发送信号。在后台线程说“开始”之前,如何让前台线程阻塞?我可以想出几种方法来做到这一点,但我正在寻找最合适、最惯用的 Ruby 方法。

在代码中:

loop do  # background, thread 1
  sleep 3
  receive_input
  tell_foreground_input_is_ready # <-- how do I do this?
end

loop do  # foreground, thread 2
  wait_for_signal_from_background  # <-- how do I do this?
  do_something
end

(注意:后台可能会多次向前台发出信号。每次前台完成等待时,它都会重置积压。)

最佳答案

根据 this page,您需要使用条件变量和互斥体

关于Ruby 多线程 : making one thread wait for a signal from another,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2541181/

相关文章:

multithreading - Posix 线程 :Signal a thread that is running in while loop

c++ - memory_order_seq_cst 栅栏什么时候有用?

Java 线程和 .sleep() 混淆

ruby - 中间人博客 - 如何确保 article.path 转换为绝对路径?

ruby - 数字 = 1-5,列表 = [1,3,4]。如何取回列表 [2,5]?

ruby-on-rails - 如何将 'premailer' 与 Rails 集成

javascript - Node.js 使用哪种线程模型?

java - Java 中静态同步方法到底是如何工作的?

ruby .extend 需要帮助

ruby-on-rails - 添加 Admin 命名空间时的路由错误