10 ms·
> Do you mean to say the compiler will insert locks? I think you're right, it's the compiler that'll insert the locks according to the semantics of the languag
by kephasp 4y ago
> Do you mean to say the compiler will insert locks?
I think you're right, it's the compiler that'll insert the locks according to the semantics of the language.
> For an out-of-order superscalar machine, mutability has nothing to do with it;
Yes it does, because it creates data dependencies. If a piece of code B loads the contents of memory where a piece of code A writes that's before B, then you can never execute B before or in parallel with A.
- agalunar 4y ago> If a piece of code B loads the contents of memory where a piece of code A writes that's before B, then you can never execute B before or in parallel with A. This is a description of what a data dependency is; I'm still not sure what your point is regarding mutable data structures specifically.
- kephasp 4y agoA mutable data structure will have such data dependencies all around. An immutable data structure cannot, because it will never be written in after creation.
- agalunar 4y agoBut an immutable data structure will cause data dependencies – the only way it couldn't cause a data dependency would be if it was never read.
- kephasp 4y agoBut once it is created, all pieces of code accessing it can be executed in any order because there will never be a write on it again.