> Am 25.08.2017 um 19:08 schrieb Adam Kemp via swift-evolution 
> <[email protected]>:
> 
> I understand what you’re saying, but I just think trying to make synchronous, 
> blocking actor methods goes against the fundamental ideal of the actor model, 
> and it’s a recipe for disaster. When actors communicate with each other that 
> communication needs to be asynchronous or you will get deadlocks. It’s not 
> just going to be a corner case. It’s going to be a very frequent occurrence.
> 
> One of the general rules of multithreaded programming is “don’t call unknown 
> code while holding a lock”. Blocking a queue is effectively the same as 
> holding a lock, and calling another actor is calling unknown code. So if the 
> model works that way then the language itself will be encouraging people to 
> call unknown code while holding locks. That is not going to go well.
> 

I would claim - without having a prove though - that as long as you don’t 
invoke async actor methods on weak or unowned actor references and the code is 
retain cycle free, no deadlocks will happen.

Cheers
Marc

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to