Synchronized Classes and Struct Members
simendsjo
simendsjo at gmail.com
Tue Oct 25 09:42:45 PDT 2011
On 25.10.2011 18:35, Gor Gyolchanyan wrote:
> What? Are you sure? It's supposed to be! Sharedness of the method is
> the sharedness of the _this_ parameter, which must cause overloading,
> since shared-ness of a type is part of the type.
> If so, it's definitely a bug.
>
> On Tue, Oct 25, 2011 at 8:24 PM, Andrew Wiley<wiley.andrew.j at gmail.com> wrote:
>>
>>
>> On Tue, Oct 25, 2011 at 8:06 AM, Gor Gyolchanyan
>> <gor.f.gyolchanyan at gmail.com> wrote:
>>>
>>> And so you can have both thread-safe synchronized heavy-duty container
>>> and a fast and small container all in one just by overloading the
>>> appropriate methods and adding appropriate synchronization blocks in
>>> the shared ones.
>>> This is one of those "little" advantages of D over C++, that make my
>>> life _SO_ much easier.
>>>
>>
>> Except that overloading shared and non-shared methods is not allowed.
It works for simple cases at least:
class C {
int i() shared {
return 1;
}
int i() {
return 2;
}
}
void main() {
auto c1 = new C();
assert(c1.i() == 2);
auto c2 = cast(shared)new C();
assert(c2.i() == 1);
}
More information about the Digitalmars-d
mailing list