我正在使用循环来等待键盘中断,然后在退出多线程环境之前允许一些清理操作.
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}
.
loop {}
导致高CPU利用率(~100%),而loop { sleep x }
不是.
另一种选择是sleep
永远:
begin sleep rescue Interrupt # ... end