msgq: use shared memory mutex and condition variables for synchronization #617
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 resolve issue #208, enhances the msgq with shared memory mutexes and condition variables for improved IPC synchronization. While handling signals interrupts all processes, shared memory mechanisms provide a more robust and efficient solution, reducing overhead and complexity in high-frequency event scenarios.
key changes:
Each block of shared memory used for messages now includes a header:
This header contains the IPC mutex, condition variable, and an initialization flag.
When sending a message, the corresponding condition variable is used to notify the receiver to retrieve the message.
The Poller uses a global shared memory context, PollerContext, to handle message notifications and reception efficiently.
@pd0wm If you have a moment, your review of this PR would be greatly appreciated to ensure I haven't missed anything or introduced new issues.