„README.md“ ändern

This commit is contained in:
Denis Knauf 2022-03-24 12:45:07 +01:00
parent 5b390b2083
commit f963e41c52

View file

@ -1,11 +1,12 @@
timeout-interrupt timeout-interrupt
================= =================
Works like ruby's timeout, but interrupts every call, also syscalls, which blocks the hole ruby-process. Works like ruby's timeout, but interrupts *every call*, also syscalls, which blocks the hole ruby-process.
It uses POSIX's alarm and traps ALRM-signals. It uses POSIX's alarm and traps ALRM-signals.
Known limitations bacause of alarm and ALRM are, that you can not use alarm or trap ALRM. Known limitations bacause of alarm and ALRM are, that you can not use alarm or trap ALRM in the same time.
Scopes Scopes
====== ======
@ -23,27 +24,30 @@ If you want to know, which was raised, you need custom exceptions:
class CustomErrorWillBeRaised <Exception class CustomErrorWillBeRaised <Exception
end end
class CustomErrorNotRaise <Exception class CustomErrorNotRaised <Exception
end end
include TimeoutInterrupt include TimeoutInterrupt
timeout( 1, CustomErrorWillBeRaised) { # Will be raised again timeout( 1, CustomErrorWillBeRaised) { # Will be raised again
timeout( 10, CustomErrorNotRaise) { sleep 2 } # Will not be raised timeout( 10, CustomErrorNotRaised) { sleep 2 } # Will not be raised
} }
Problems Problems
======== ========
Memory-Leaks or no clean up Memory-Leaks and missing clean up
--------------------------- ---------------------------------
Do not forget, syscall can have allocated memory. Syscalls can allocate memory.
If you interrupt a call, which can not free his allocations, you will have a memory leak. If you interrupt a syscall, which then cannot free his allocations, it will result in a memory leak.
If it opens a file, reads it and closes it and while it reads, a time out occurs, the file will not be closed. If it opens a file, while it reads, a time out occurs, the file will not automatically be closed.
So, use it only, if your process did not live any longer or if you call something, which never allocate mem or opens a file. So, you should only use it, if your process will die after interrupt or if you are sure, that your call never allocate memory or opens a file.
You could also publish informations about opened files, that it could be cleaned up later.
Every time, a process dies, all his memory will be freed and every file will be closed, so let your process die and you should be safe. Every time, a process dies, all his memory will be freed and every file will be closed, so let your process die and you should be safe.
Exception-handling Exception-handling
------------------ ------------------
@ -60,11 +64,11 @@ Timeouts can break your exception-handling! You should not handling exception wh
end end
} }
Same happens, if clean\_up will raise an exception. Same happens, if clean\_up will raise an exception, so handle it in the same way.
And same problem you have with ruby's `Timeout.timeout`. And same problem you have with ruby's `Timeout.timeout`.
Copyleft Copyleft
========= =========
Copyright (c) 2021 Denis Knauf. See LICENSE.txt for further details. Copyright (c) 2021 Denis Knauf. See LICENSE.txt for further details.