`shared`...
RazvanN
razvan.nitu1305 at gmail.com
Mon Oct 1 11:12:25 UTC 2018
On Monday, 1 October 2018 at 02:29:40 UTC, Manu wrote:
> struct Bob
> {
> void setThing() shared;
> }
>
> As I understand, `shared` attribution intends to guarantee that
> I dun
> synchronisation internally.
> This method is declared shared, so if I have shared instances,
> I can
> call it... because it must handle thread-safety internally.
>
> void f(ref shared Bob a, ref Bob b)
> {
> a.setThing(); // I have a shared object, can call shared
> method
>
> b.setThing(); // ERROR
> }
>
Instead of making mutable->shared conversion implicit, you use
template this parameters:
struct B
{
void setThing(this T)()
{
static if(is(T == shared(B)))
{
/* do synchronisation */
}
else
{
/* all other cases */
}
}
}
I think that it's great that mutable(T) is not implicitly
convertible to shared(T) as it makes synchronization bugs a lot
more obvious.
Cheers,
RazvanN
More information about the Digitalmars-d
mailing list