`loop{}`与`loop{sleep 1}`的区别是什么?

6

我正在使用循环等待键盘中断,在多线程环境下允许一些清理操作,然后退出。

begin
  loop {}
rescue Interrupt
  p "Ctr-C Pressed..Cleaning Up & Shutting Down"
  loop do
    break if exit_bool.false?
  end
  exit 130
end

这段代码在主线程中运行。有多个线程执行多个文件和数据库操作。exit_bool是一个原子变量,由其他线程设置以表示它们正在进行某些操作。我检查该值并等待直到它变为false,然后退出。
我想知道loop{}loop{sleep x}相比的成本是多少。
1个回答

7

loop {}会导致高CPU利用率(~100%),而loop { sleep x }则不会。

另一种选择是永远只使用sleep:

begin
  sleep
rescue Interrupt
  # ...
end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接