Change dwmblocks to use an asynchronous approach to executing blocks #110
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR changes the way dwmblocks functions. Instead of sleeping and checking periodically if a blocks needs to be updated a POSIX interval timer is created for each block. On expiry of this timer a either a signal is sent to the process by the kernel that invokes the signal handler for that block or if the block is setup with a signal of 0 a new thread is spawned for the block which executes the command provided to said block.
The main process after setting up each timer simply calls pause() and waits for a delivery of a signal.
These changes should improve performance and reduce CPU usage.
The program now also needs to be linked with
-lrt
.