> Am 23.08.2017 um 12:29 schrieb Thomas via swift-evolution
> <[email protected]>:
>
>
>> On 23 Aug 2017, at 11:28, Thomas via swift-evolution
>> <[email protected] <mailto:[email protected]>> 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
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution