feat: Add configurable sleep mechanism for singleton global() method #4
+496
−21
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 implements a configurable sleep mechanism for the
global()method when accessing singleton instances that are not yet initialized, addressing race conditions in multi-threaded scenarios.Changes Made
Core Implementation
sleep_msparameter to configure sleep duration (default: 500ms)global()method now:New Usage Patterns
Multi-threaded Benefits
Before this change, accessing an uninitialized singleton would panic immediately:
Now, Thread 1 will sleep and wait for Thread 2 to complete initialization:
Backward Compatibility
All existing code continues to work without changes. The sleep mechanism is enabled by default with sensible defaults (500ms intervals, 20 max retries = 10 second timeout).
Documentation & Testing
Fixes #3.
💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Click here to start the survey.