On Saturday, 9 November 2013 at 16:55:18 UTC, s...@s.com wrote:
It seems to me that the way things are currently implemented
that a class itself has to be specifically made to handle being
shared. That is to say, I cannot import some general library
and do (new shared LibraryType()) if the class doesn't support
all the proper shared methods. In order for the class to
properly implement the shared methods, it basically needs to be
defined as such:
shared class Foo
{
....
}
But now I still need to do shared Foo everywhere I use that
class. This seems a bit off to me.
R/
Shammah
actually you also need shared methods/memebers, shared works
similar to const, so for example look at this:
------------------------------------------
import std.concurrency;
import std.stdio;
import core.thread;
// notice no shared at class
class A
{
shared void AddX() { x++; }
shared int x;
}
// accepts shared instances only, so in this way you can't
accidentally modify non-shared instances
void worker(shared A inst)
{
inst.AddX();
writeln(inst.x);
}
void main()
{
shared A a = new shared A();
A b = new A();
// worker(b); // <-- fail!
spawn(&worker, a);
thread_joinAll();
}
-----------------------------------------
so it is just storage specifier like const or immutable. and...
ugh, sorry i'm too crappy on teaching people, but i hope you find
this example somewhat helpful and someone else could give you
more info on this.