On Saturday, 9 May 2015 at 18:41:59 UTC, bitwise wrote:
What does 'shared' do to member variables?

It makes sense to me to put it on a global variable, but what sense does it make putting it on a member of a class? What happens if you try to access a member of a class/struct instance from another thread that is not marked 'shared'?

Also, I wasn't able to find any thorough documentation on shared, so if someone has a link, that would be helpful.

 Thanks
   Bit

If a variable/class/struct etc is not shared, for variables and struct, you find their initial value. For class, you get null.

For first timers (I started using shared keyword more than 2 years ago), do not forget that: a shared method is all about saying that this method is defined for shared object. So, do not get confused. It happened to me a lot.

Bad part of shared is that, you will be repeating it again, and again, and again, and again, everywhere. So, try to be patient if you are going to be using it for a long time.

Stupidly, shared variables' value cannot be increased/decreased directly. Compiler says it is deprecated, and tells me to use core.atomic.atomicop. You will see this as well. Hey compiler! I know 100% that no other thing will be touching this variable.

Reply via email to