🍒 5.5 [Concurrency] Limit queue width with set_width SPI call on linux #39742
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.
Description: To avoid thread explosions, i.e. thread growth to the hardcoded number of 255 when tasks are blocked on Linux, and in order to get the same behavior as Swift Concurrency has on Darwin (and back deployment), we must set the global queue width as we set it up for swift concurrency. Without this, when tasks block for even short burtsts, we end up with many many threads on Linux systems. The fix sets the width, same as we do on back deployment and gets us consistent behavior across platforms, and no thread explosions.
Risk: Low, this is how it was supposed to work to begin with.
Review by: @DougGregor
Testing: Verified the fix works manually on Ubuntu boxes, with sample applications. A bit hard to test this automatically, as we'd need to check for thread counts in the system.
Original PR: #39732
Radar: rdar://79907041