[Concurrency] Alternative Task API. #37495
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.
The
Task
type has oscillated somewhat from being purely a namespace,to having instances that are used (albeit rarely), back to purely
being a namespace that isn't used for all that many names. Many of the
names that used to be on Task have already been moved out, e.g., for
creating new detached tasks, creating new task groups, adding
cancellation handlers, etc.
Collapse
Task.Handle<Success, Failure>
intoTask<Success, Failure>
.Task.Handle
is the type that is most frequently referenced in theconcurrency library, so giving it the short name
Task
is mostappropriate. Replace the top-level async/detach functions with a
Task
initializer andTask.detached
, respectively.The
Task
type can still act as a namespace for static operationssuch as, e.g.,
Task.isCancelled
. Do this with an extension of theform:
We've been accruing a number of compatibility shims. Move them all
into their own source file, deprecate them, and make them
always-emit-into-client so they don't have any ABI impact.
This also covers other changes that came up in the review:
get()
tovalue
as an async propertygetResult()
toresult
as an async propertywithTaskCancellationHandler
parametersTaskPriority
members, and make it aRawRepresentable
struct