I'm relatively new to Swift, and very new to concurrency via Async/Await, so please be patient. 😀
I'm having a hard time comprehending how to do complex operations asynchronously in background threads, and then in turn bring the results back to the main thread. I'm getting various errors along the lines of "Mutation of captured var 'personName' in concurrently-executing". I've paired the issue down as simply as possible as follows, and you'll see where the compiler gives the error message.
I'd appreciate any advice on how to evolve my mental model to make this work.
Thanks! Bruce
import Foundation
actor Person {
var myName = "Thomas Jefferson"
var name: String {
get {
return myName
}
}
}
func main() {
let person = Person()
var personName: String
print("start")
let nameTask = Task {
return await person.name
}
Task {
do {
personName = try await nameTask.result.get()
// Error: Mutation of captured var 'personName' in concurrently-executing code
} catch {
print("error!!!")
}
}
print("The person's name is \(personName)")
}
RunLoop.main.run()
main()