pike icon indicating copy to clipboard operation
pike copied to clipboard

Improve performance for signal handling.

Open lithdew opened this issue 4 years ago • 1 comments

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.

lithdew avatar Nov 18 '20 06:11 lithdew

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.

lithdew avatar Nov 19 '20 07:11 lithdew