[swift-evolution] [Concurrency] async/await + actors
Marc Schlichte
marc.schlichte at googlemail.com
Mon Sep 11 18:19:49 CDT 2017
> Am 07.09.2017 um 07:05 schrieb Chris Lattner via swift-evolution <swift-evolution at swift.org>:
>
>
> Imagine you are maintaining a large codebase, and you come across this (intentionally abstract) code:
>
> foo()
> await bar()
> baz()
>
> Regardless of what is the most useful, I’d argue that it is only natural to expect baz() to run on the same queue/thread/execution-context as foo and bar.
But what if `bar` was defined like this in a pre async/await world:
`bar(queue: DispatchQueue, continuation: (value: Value?, error: Error?) -> Void)`
^ There are several existing APIs which use this pattern of explicitly providing the queue on which the continuation should run.
My expectation (especially as a maintainer) would be that the async/await version exhibits the same queueing semantics as the `old` CPS style - whatever that was (implicitly on the main-queue, implicitly on some background queue or explicitly on a provided queue).
Also, a related question I have: Will / should it be possible to mix-and-match CPS and async/await style for system APIs? I would say yes, so that we can transfer to the new async/await style at our own pace.
Cheers
Marc
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170912/ee1d1532/attachment.html>
More information about the swift-evolution
mailing list