Używam pętli do czekania na przerwanie klawiatury, a następnie zezwalam na operację czyszczenia przed wyjściem w środowisku wielowątkowym.`loop {}` versus `loop {sleep 1}`
begin
loop {}
rescue Interrupt
p "Ctr-C Pressed..Cleaning Up & Shutting Down"
loop do
break if exit_bool.false?
end
exit 130
end
Ten fragment kodu działa w głównym wątku. Istnieje wiele wątków wykonujących kilka operacji plikowych i baz danych. exit_bool
jest zbiorem atomowym ustawionym przez inne wątki, aby wskazać, że znajduje się w środku jakiejś operacji. Sprawdzam wartość i czekam, aż zmieni się na false
, a następnie zakończ.
Zastanawiam się, jaki jest koszt loop{}
w przeciwieństwie do loop{sleep x}
.