-
Notifications
You must be signed in to change notification settings - Fork 6k
Support message loops whose tasks are executed concurrently. #8419
Support message loops whose tasks are executed concurrently. #8419
Conversation
The number of workers depends on what the platform deem appropriate for the system at runtime.
|
This is WIP and prototypes the necessary infrastructure for supporting use cases like concurrent resource fetches. |
|
I got rid of the platform specific concurrent message loop in favor of one using condition variables and a mutex. |
|
Investigating why the tests are failing. The same pass on Mac. |
|
Addressed early shutdown. |
|
/cc @jason-simmons |
|
Ping. This is good to go. |
cbracken
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| FML_EMBEDDER_ONLY | ||
| static MessageLoop& GetCurrent(); | ||
|
|
||
| enum class Type { kConcurrent }; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Consider adding an enum value for the default type (kSerial?)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Those are regular message loops that need to be explicitly run. I don't components to be able to start those up explicitly.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The ability to create a serial queue is present but that is the default with the no-argument constructor which is private.
| } | ||
|
|
||
| MessageLoop::MessageLoop(Type) | ||
| : loop_(fml::MakeRefCounted<ConcurrentMessageLoop>()), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Support both types here. See comment in header.
flutter/engine@eec74e5...905c571 git log eec74e5..905c571 --no-merges --oneline 905c571 Add windows host_debug_unopt build (flutter/engine#8515) 39e1d00 Remove redundant specification of the |flutter| namespace in the engine. (flutter/engine#8523) 56052c7 Rename the shell namespace to flutter. (flutter/engine#8520) ca1d163 Support message loops whose tasks are executed concurrently. (flutter/engine#8419) 8ae84ec Roll src/third_party/skia de8362c6f212..10bf7020aa15 (5 commits) (flutter/engine#8522) 2dbd981 Roll src/third_party/dart 06ed3f598c..1490a90bc1 (8 commits) 5279132 Android Embedding PR27: Fix SurfaceView flicker in Fragment transactions (flutter/engine#8504) 86ab45c Remove the unused EnableBlink flag. (flutter/engine#8518) d5880a6 Roll src/third_party/skia b5d8c634f95b..de8362c6f212 (14 commits) (flutter/engine#8519) The AutoRoll server is located here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff (jsimmons@google.com), and stop the roller if necessary.

The number of workers depends on what the platform deem appropriate for the system at runtime.