pike
pike copied to clipboard
Improve performance for signal handling.
PackedWaker
/ PackedList
in waker.zig
was quickly written and could possibly be improved. It takes a Set
which is a packed struct of booleans representative of a bitset.
The PackedWaker
is used for signal handling, where Set
is the set of possible signals that a caller may suspend themselves on.
Upon the notification of a signal being received by a process, should any of the received signals match any callers waited-upon signals, the suspended caller would be resumed.
Once this feature is done, I will move signal handling on linux/darwin to utilize sigaction
to be able to catch all signals directed towards a process unlike signalfd
or kqueue EVFILT_SIGNAL
to keep signal handling behavior consistent across platforms.
Signal handling on posix systems is now done via sigaction
, and examples have been updated. The hope is to replace PackedWaker
/ PackedList
with a condvar implementation as suggested by @kprotty.