`shared`...
Nicholas Wilson
iamthewilsonator at hotmail.com
Mon Oct 1 09:58:24 UTC 2018
On Monday, 1 October 2018 at 08:04:38 UTC, Kagamin wrote:
> Shared data may need different algorithms.
Yes, but those same algorithms will work on unshared (they might
be slower but they will work). The reverse is not true, it can
lead to race conditions.
>If unshared data is
> implicitly convertible to shared, you start to conflate shared
> data with unshared, so you're back to C-style sharing.
No, when participating in overloading, an unshared method will be
preferred over a shared method for an unshared object. Same with
parameters that are not `this`.
> This is how you can do it:
>
> shared struct SharedBob
> {
> this(int){}
> void setThing(){}
> }
> alias shared SharedBob Bob;
>
> void f(ref shared Bob a, ref Bob b)
> {
> a.setThing(); // I have a shared object, can call shared
> method
>
> b.setThing(); // ok
> }
>
> int main()
> {
> auto b=Bob(0);
> Bob c;
> f(b,c);
> return 0;
> }
I'm not sure what that was supposed to demonstrate.
More information about the Digitalmars-d
mailing list