3 ms·
Inversely, it's relatively easy to abstract away the complexity of pointers (so we do), but useful abstractions that make race-y code impossible are horrendousl
by pdpi 7y ago
Inversely, it's relatively easy to abstract away the complexity of pointers (so we do), but useful abstractions that make race-y code impossible are horrendously hard to get right (so we don't).
Rust's borrow checker is a great example of the sort of complexity you _have_ to bring in to have your language protect you from data races.
- zzzcpan 7y agoYou don't need Rust's complexity and borrow checking to protect you from data races. Actor model does that without the bad parts.
- hderms 7y agoThat's true but actor model achieves freedom from data races by forcing ALL messages to be synchronized. This can be useful in some situations but imo isn't a panacea for concurrency issues
- zzzcpan 7y ago> ALL messages to be synchronized I'm assuming you mean implementation-wise. Only cross-core communications need synchronization and since messages are asynchronous you can pay synchronization costs only ones for the whole batch.