Ruby在线程

时间:2017-01-20 21:19:59

标签: ruby multithreading

我有一个用于抽搐机器人的ruby脚本。它的主要方法是run()来启动它,并退出()以关闭机器人。在线发帖之后,似乎我可以通过以下方式制作一个主题:

TWITCH_BOT = Thread.new{ BOT = TwitchBot.new }

然后我需要加入它以保持活着?

TWITCH_BOT.join()

如何从线程内的TwitchBot执行run()命令,而不是尝试执行run()的线程?

1 个答案:

答案 0 :(得分:0)

虽然可能有一篇关于安全异步代码的论文,如果它是一个简单的机器人,为什么不写这样的代码呢?

class TwitchBot
...
  def run(&code_block)
    @thread = Thread.start &code_block
  end
  ...
  def quit
    @thread.exit unless @thread.nil?
  end
  ...
end
编辑:或者你正在使用其他人写的抽搐机器人?在这种情况下,也许可以编写一个包含上述内容的包装器。