commit | 8bc0839cede7367407ec719ba31fe107fb750fd3 | [log] [tgz] |
---|---|---|
author | Ambre Williams <ambre@google.com> | Tue Oct 15 17:01:51 2019 +0000 |
committer | CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org> | Tue Oct 15 17:01:51 2019 +0000 |
tree | 6ff45a145d6e4d3ecd558318f83db3f8f5264f00 | |
parent | 495d3454987c67d1c0749fdca40f429b4f42e54c [diff] |
[coroutine] Don't reuse coroutines in CoroutineManager Once coroutines have been resumed with ContinuationStatus::INTERRUPTED, they cannot yield anymore (any attempt to Yield will DCHECK). The coroutine manager was trying to reuse its coroutines as long as it is not destructed, but coroutines can also be interrupted if they do a SyncCall and the callback is dropped. Instead of reusing coroutines, we rely on the coroutine service reusing stacks. This leads to (temporarily) using one more stack: when one pending task completes, we need to launch the next task in another coroutine before returning from the current one. Test: CoroutineManagerTest.MultipleCoroutinesInterrupted Change-Id: I1abdb02de44565fe2570d937df1da6235b7393ad
Pink + Purple == Fuchsia (a new operating system)
Fuchsia is a modular, capability-based operating system. Fuchsia runs on modern 64-bit Intel and ARM processors.
Fuchsia is an open source project with a code of conduct that we expect everyone who interacts with the project to respect.
See Getting Started.
See fuchsia.dev.