What are the real advantages that D offers in multithreading?

Sean Kelly via Digitalmars-d digitalmars-d at puremagic.com
Sat Jan 30 09:46:35 PST 2016


On Wednesday, 27 January 2016 at 09:33:16 UTC, Kagamin wrote:
> On Tuesday, 26 January 2016 at 20:33:34 UTC, Chris Wright wrote:
>> You can use fibers in C++ if you find a library to do it 
>> (boost might?). You might be able to find a Java library for 
>> it, but it's difficult and might require bytecode rewriting.
>
> The java approach is Netty and NIO.

Netty and NIO are an event dispatching mechanism (think 
libebevent) backed by a ForkJoinPool. No fibers there. Java 
/does/ have fibers in Quasar, though the implementation is a bit 
weird because the Java instruction set doesn't support 
continuations.

Message passing via std.concurrency is important to note. The 
scheduler is pluggable and can seamlessly multiplex fibers on top 
of a thread pool (the Erlang "millions of threads" approach). 
Thread local by default is notable as well, though fibers throw a 
wrench in this. The "synchronized" keyword is inadvisable in 
modern concurrent programming. I think it remains largely to ease 
porting code from Java.



More information about the Digitalmars-d mailing list