What are the real advantages that D offers in multithreading?

Guillaume Piolat via Digitalmars-d digitalmars-d at puremagic.com
Tue Jan 26 05:05:26 PST 2016


On Tuesday, 26 January 2016 at 11:44:56 UTC, nbro wrote:
> On Tuesday, 26 January 2016 at 11:41:49 UTC, nbro wrote:
>> Hi!
>>
>> I have seen that D offers basically similar constructs to Java 
>> for example for creating multithreaded applications. I would 
>> like to understand better what are the real advantages that D 
>> offers. Does D offer something that other known programming 
>> languages, such as C++, Java and Python, do not offer? An 
>> exhaustive explanation with concrete examples would be nice.
>
> Moreover, could you also explain why D was designed to 
> synchronize entire classes instead of single methods. If I 
> synchronize single methods (in Java for example), I could still 
> be able to use other non-synchronized methods without needing 
> to acquire the lock, so I don't understand this decision.


On the practical side:
- D has easy parallel foreach in the standard library.
- D has easy TLS variables which can help in caching situations 
from time to time (avoids a contention point). Not sure what they 
are for else.
- D has pure which helps compiler disambiguate aliasing (a pure 
function couldn't touch anything else that what is passed.)

On the "not sure if useful" side:
- D has a GC which helps in some lock-free situations.
- D has deep-const and immutable which can be shared between 
threads without restrictions.
- D offers "shared" which can theorically help you signal things 
that are shared between threads.
- synchronized classes and methods. But they are more a liability 
that a positive, you can always make something finer-grained with 
a mutex.




More information about the Digitalmars-d mailing list