> [it is a general race condition if] there is some order among events a and b but the order is not predetermined by the program
(Christoph von Praun)
If two actors do some work concurrently and when finished send a message to another actor, the order those messages arrive at the other actor, event a and event b, is not predetermined by the program. So it's a race condition.
actor a {
do some work;
send 'a' to x;
}
actor b {
do some work;
send 'b' to x;
}
actor x {
receive; <- has this received from 'a' or 'b'? Nobody knows. They've raced.
}
You can express any concurrency with actors, but we do not know how to do so as efficiently as with other concurrency models for parallelism. Someone
might be able to implement it efficiently, but nobody has managed it yet, so we're still reliant on shared memory and other approaches concurrency.