Limit total time spent on green threads. #1774
Merged
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.
Every single-threaded
ThreadPool
takes up a certain fraction of the app's time per frame. Without any coordination, they could take up more than 100% of available time, causing the app to slow down. By using static variables, we can make them work together to limit the total time spent per frame.For instance, at 60 fps and a
workLoad
of 0.5,ThreadPool
s will work together to take up approximately 1/120 of a second each frame. This leaves another 1/120 for everything else on the main thread.This also fixes a null pointer error by waiting to access
Window.frameRate
until a window is actually available.