-
Notifications
You must be signed in to change notification settings - Fork 11
Lock-free scheduler with per-priority queues #193
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
50 commits
Select commit
Hold shift + click to select a range
3f052ee
Lock-free scheduler with per-priority queues and pre-existing TSAN ra…
TrentHouliston c03ffd2
Formatting
TrentHouliston 3d2ebfd
Replace atomic shared_ptr cache with atomic raw pointer; fix clang-tidy
TrentHouliston 1268385
Address Copilot review: leak fix + group drain + doc cleanup
TrentHouliston 64b9879
Merge branch 'main' into houliston/scheduler
TrentHouliston 9159be4
Fix idle epoch lost when a Sync waiter is parked off-pool
TrentHouliston 105cefe
Give UDP test the same CI timeout budget as TCP
TrentHouliston 84da938
Address SonarCloud PR 193 issues: code fixes and scoped suppressions
TrentHouliston 3244882
Address Copilot review: queue dtor leaks, block reclaim race, force-s…
TrentHouliston aa8b9a2
Fix group token leak when opportunistic drain races park publish.
TrentHouliston 5f74b95
Make group token handback accounting exact and add contention stress …
TrentHouliston fb14e22
Fix clang-tidy findings in scheduler headers.
TrentHouliston 28a0ad9
Remove unused Semaphore and fix pending_tasks publish ordering
TrentHouliston 04de2ed
Fix force-stop deadlock hazard and scope test API define
TrentHouliston e032424
Fix clang-tidy diagnostics in threading unit tests.
TrentHouliston 31377e2
Fix SonarCloud findings in pool teardown and scheduler dtor.
TrentHouliston 054d399
Improve scheduler new-code coverage via deletion and BDD tests.
TrentHouliston 4fb157a
Fix CI failures in scheduler tests and multicast probing.
TrentHouliston 307691f
Extract shared queue BDD helpers to cut SonarCloud duplication.
TrentHouliston da737ff
Adopt PR #190 multicast round-trip probe for UDP CI stability.
TrentHouliston 42d386a
Consolidate shared queue tests into templated Catch2 cases.
TrentHouliston aecf5c0
Extract shared lock-free block helpers to cut SonarCloud duplication.
TrentHouliston 1708045
Delegate MPSC force-stop drain to the consumer thread.
TrentHouliston d500e32
Fix MPSC force-stop hangs after the consumer thread exits.
TrentHouliston 5735023
Apply PR review queue cleanups for docs, BLOCK_SIZE, and test constants.
TrentHouliston eb13426
Type Reaction scheduler cache as atomic Pool* for type safety.
TrentHouliston e92f9bb
Replace Pool external-waiter register/unregister with RAII handle.
TrentHouliston d5fdd39
Document why Catch2 BENCHMARK was not adopted for emit ping-pong matrix.
TrentHouliston b78ea74
Introduce PriorityLevel enum for scheduler bucket mapping.
TrentHouliston 1e8a509
Close IOController wake-then-lock race with wake_requested handoff.
TrentHouliston 15ee1ea
Drop PR #190 UDP CI workarounds; rely on multicast probe.
TrentHouliston a7b63ea
Spike: document TaskQueue wait-freedom and tighten spin back-off
TrentHouliston a550cad
Define BUILD_TESTS before add_subdirectory(src).
TrentHouliston 94c3ac2
Fix clang-tidy forward-ref warning in spin_until.
TrentHouliston a35eca3
Format taskqueue wait-free assessment for mdformat.
TrentHouliston 030a98a
Fix CI: PriorityLevel enum size and UDP timeout scaling.
TrentHouliston db584f1
Restore 20s UDP timeout budget on Windows CI.
TrentHouliston 166a903
Give Windows UDP matrix 25s CI timeout headroom.
TrentHouliston 31962a2
Allow UDP matrix to finish and shut down on Windows CI.
TrentHouliston 3568c44
Extend UDP CI timeout for Windows shutdown pipeline.
TrentHouliston fe9fdba
Restore Windows CI UDP skip; IOController path still flaky on GHA.
TrentHouliston 42a7953
Add explanation docs for the lock-free scheduler.
TrentHouliston c33d48b
Fix mdformat violations in scheduler docs.
TrentHouliston 3b3ca4b
Remove R&D spike docs from houliston/scheduler branch.
TrentHouliston b7534f6
Refactor IO notifier wake_requested to RAII guards.
TrentHouliston c49d925
Revert queue spin backoff to std::this_thread::yield().
TrentHouliston dff42d6
Fix clang-tidy on NotifierWakeGuard RAII helpers.
TrentHouliston 4591e31
Remove NUCLEAR_GROUP_TEST_API hooks from Group production code.
TrentHouliston c53c2a9
Address latest Copilot review on PR #193.
TrentHouliston 5612b90
Fix clang-tidy include-cleaner in Group test
TrentHouliston File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -14,6 +14,7 @@ | |
|
|
||
| # Build & CMake files | ||
| build/ | ||
| build-*/ | ||
| CMakeCache.txt | ||
| CMakeFiles | ||
| Makefile | ||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,26 @@ | ||
| # SonarCloud issue suppressions for deliberate lock-free / placement-new code. | ||
| # projectKey, organization, sources, tests and coverage settings are passed on | ||
| # the scanner CLI in .github/workflows/sonarcloud.yaml; only the ignore rules | ||
| # below are configured here. | ||
|
|
||
| sonar.issue.ignore.multicriteria=e1,e2,e3,e4,e5 | ||
|
|
||
| # S8417: explicit memory_order arguments are intentional in this concurrency | ||
| # framework; the carefully chosen relaxed/acquire/release/acq_rel orderings are | ||
| # required for performance and must not be forced to seq_cst. | ||
| sonar.issue.ignore.multicriteria.e1.ruleKey=cpp:S8417 | ||
| sonar.issue.ignore.multicriteria.e1.resourceKey=src/threading/** | ||
| sonar.issue.ignore.multicriteria.e2.ruleKey=cpp:S8417 | ||
| sonar.issue.ignore.multicriteria.e2.resourceKey=src/extension/** | ||
|
|
||
| # S5025 (manual new/delete), S3630 (reinterpret_cast) and S3432 (explicit | ||
| # destructor call) are unavoidable in the lock-free queues: manual Block | ||
| # lifetime is dictated by the graveyard reclamation scheme and the | ||
| # reinterpret_cast + explicit ~T() are the placement-new idiom for the aligned | ||
| # slot storage. Scope these to the queue files only. | ||
| sonar.issue.ignore.multicriteria.e3.ruleKey=cpp:S5025 | ||
| sonar.issue.ignore.multicriteria.e3.resourceKey=**/scheduler/queue/*.hpp | ||
| sonar.issue.ignore.multicriteria.e4.ruleKey=cpp:S3630 | ||
| sonar.issue.ignore.multicriteria.e4.resourceKey=**/scheduler/queue/*.hpp | ||
| sonar.issue.ignore.multicriteria.e5.ruleKey=cpp:S3432 | ||
| sonar.issue.ignore.multicriteria.e5.resourceKey=**/scheduler/queue/*.hpp |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.