[dmd-concurrency] synchronized, shared, and regular methods inside the same class

Andrei Alexandrescu andrei at erdani.com
Mon Jan 4 18:19:33 PST 2010


That looks pretty good!

Andrei

Michel Fortin wrote:
> Le 2010-01-04 à 18:58, Andrei Alexandrescu a écrit :
> 
>> int y = sharedRead(x);
>> ++y;
>> sharedWrite(y, x);
>>
>> When writing such code the user inevitably hits on the documentation for the two intrinsics, which clearly define their guarantees: only the sequence of sharedRead and sharedWrite is preserved. At that point, inspecting the code and understanding how it works is improved.
> 
> I think it could be better than that. Having a lot of functions with various names makes the code much less readable since the logic needs to be expressed in a completely different syntax.
> 
> What I'd like is if regular operators could work as atomic operations. It'd be great if ++atomic(y) could translate to atomic increment, atomic(y) = 10 could be used insert a write barrier, and x = atomic(y) could translate to something that reads y with a read barrier. You could even have atomic(y) += 3 for an atomic add. I believe most of this can be achieved with a struct and proper operator overloading.
> 



More information about the dmd-concurrency mailing list