> Am 23.08.2017 um 12:29 schrieb Thomas via swift-evolution > <swift-evolution@swift.org>: > > >> On 23 Aug 2017, at 11:28, Thomas via swift-evolution >> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote: >> >> 1. What happens to the actor's queue when the body of a (non void-returning) >> actor method awaits away on some other actor? Does it suspend the queue to >> prevent other messages from being processes? It would seem to be the >> expected behavior but we'd also need a way to detach from the actor's queue >> in order to allow patterns like starting a long-running background operation >> and still allowing other messages to be processed (for example, calling a >> cancel() method). We could still do these long-running operations by passing >> a completion block to the method, rather than via its return value. That >> would clarify this goes beyond this one actor message, but we're back to the >> old syntax... > > Maybe that's where Futures would come in handy? Just return a Future from the > method so callers can await long-running operations.
If you wrap the call to a long-running operation of another actor in a `beginAsync`, I would assume that other `actor funcs` of your actor will be able to run even while the long-running operation is pending: actor class Caller { let callee = Callee() var state = SomeState() actor func foo() { beginAsync { let result = await callee.longRunningOperation() // do something with result and maybe state } } actor func bar() { // modify actor state } } Note, that in this case while waiting asynchronously on the long-running operation, the state of the caller might get changed by another of its `actor funcs` running. Sometimes this might be intended - e.g. for cancellation - but it also could lead to hard to find bugs... > > Thomas > > _______________________________________________ > swift-evolution mailing list > swift-evolution@swift.org > https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution