I have been looking at the Actor Model for a while now. To me it seems to be just another approach towards concurrent programming with its own upsides and downsides.
It certainly does not guarantee deadlock-free environment. A can wait for a message from B while B waits for a message from A. I don't know if we can say the actors approach makes it more difficult to run into deadlock situations "if programmed correctly". So far I haven't seen any widely accepted literature on how actors should be designed. So I find it hard to blame this on bad programming.
There is no shared state between actors. If 1000 actors want to update a shared variable at the same time, they simply send non-blocking messages. Threads on the other hand will have to block. On the other hand, what if a process wants to be sure that the shared variable has been updated before moving on? A thread wouldn't have to worry because it blocks until the update is done while an actor will have to wait for a "update done" message. Besides, it is possible to program threads that put updates in a queue instead of blocking - effectively achieving what actors do.
I asked before the solution to the problem of a producer producing items in a much faster rate than a consumer can consume (for the Scala language). This may result in out of memory error. You can see the post to see proposed solutions. Fine, there are solutions, but most of our solutions require us to do some sort of synchronization like this. I haven't seen any scenarios so far where actors can run off and do their work independently without having to synchronize with other actors.
Erlang, a functional programming language, uses actors. Maybe this programming paradigm helps define problems to be suitable for actors?
We can point out more pros and cons but my question to stackoverflow is: given some concurrency problem, what would you look for to decide whether to use actors or not? Do you think the decision matters at all?
Edit Although I accepted the first answer, I encourage users to read the second answer as well. Still hoping to get more answers.