如何设置循环连续运行而不会卡在无限循环中?

时间:2016-06-30 17:17:27

标签: ruby loops

我每隔n分钟执行一些代码并更新一些值。我用条件检查这些值,如果需要,我调用一个使LED闪烁的循环。该循环函数如下所示:

def blink_led_constant
    while 1
      #  RPi::GPIO.set_high 18
      #  sleep(1)
      #  RPi::GPIO.set_low 18
      #  sleep(1)
    end
end

基本上我希望此LED在后台闪烁,直到满足某个条件。如何将其设置为运行功能,还要继续通过函数调用以重复我的程序?

现在根据我的写法,如果调用此函数,它会无限期地陷入困境。

由于

1 个答案:

答案 0 :(得分:3)

您可以使用线程执行此操作。

def blink_led_constant
  loop do
    #  RPi::GPIO.set_high 18
    #  sleep(1)
    #  RPi::GPIO.set_low 18
    #  sleep(1)
  end 
end

thread = Thread.new { blink_led_constant }

然后您可以在blink_led_constant在后​​台运行时执行其他命令。如果您希望在条件满足后将其中断,请将loop do更改为while。满足条件后,可以通过闪烁来电Thread.kill(thread)thread.kill停止指示灯。