当前位置:  开发笔记 > 编程语言 > 正文

`loop {}`与`loop {sleep 1}`

如何解决《`loop{}`与`loop{sleep1}`》经验,为你挑选了1个好方法。

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

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

这段代码在主线程中运行.有多个线程执行多个文件和DB操作.exit_bool是由其他线程设置的原子var,表示它们处于某个操作的中间.我检查值并等到它转动false然后退出.

我想知道loop{}相反的成本是多少loop{sleep x}.



1> Stefan..:

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

另一种选择是sleep永远:

begin
  sleep
rescue Interrupt
  # ...
end

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有