a86*_*a86 6 ruby performance multithreading loops
我正在使用循环来等待键盘中断,然后在退出多线程环境之前允许一些清理操作.
begin
loop {}
rescue Interrupt
p "Ctr-C Pressed..Cleaning Up & Shutting Down"
loop do
break if exit_bool.false?
end
exit 130
end
Run Code Online (Sandbox Code Playgroud)
这段代码在主线程中运行.有多个线程执行多个文件和DB操作.exit_bool是由其他线程设置的原子var,表示它们处于某个操作的中间.我检查值并等到它转动false然后退出.
我想知道loop{}相反的成本是多少loop{sleep x}.
loop {}导致高CPU利用率(~100%),而loop { sleep x }不是.
另一种选择是sleep永远:
begin
sleep
rescue Interrupt
# ...
end
Run Code Online (Sandbox Code Playgroud)