On 23.10.2011 20:14, Jonathan M Davis wrote:
On Sunday, October 23, 2011 14:32:34 simendsjo wrote:
What does shared for functions mean? I thought it was supposed to
automatically synchronize access, but this doesn't seem to be the case.
void f() shared {
// no synchronization
}
void f() {
synchronized {
// do stuff
}
}
shared doesn't automatically synchronize anything. I believe that it makes
some guarantees about instruction ordering not being messed with by the
compiler, but I'm not sure. I'd have to go look it up in TDPL though.
Regardless, on a _function_, I don't think that shared does anything. D
probably ignores it. It tends to do that with incorrect attributes. It _might_
do something though. I don't know.
- Jonathan M Davis
Guess it's about time to buy TDPL.
I remember D ignoring protection attributes before, but this is a bug now:
private public class C {}
t.d(1): redundant protection attribute
So I guess shared has an effect on functions (or the missing error is a
bug).