On Nov 25, 2012, at 11:29 AM, Sparsh Mittal <[email protected]> wrote:

> Hello
> 
> I could find this for Java, but not yet for D and so wanted to ask:
> 
> Would you tell briefly, how multi-threading in D works on hardware. What I 
> wanted to ask is: if we have a single-core or multicore system, how does 
> scheduling of threads in D happens.
> 
> For Java, what I found was (in my words):
> 
> The JVM runs as a single process which internally spawns many threads. When 
> the scheduler code running inside the JVM asks for another thread, JVM starts 
> another thread. The execution of the threads is done using timeslicing, which 
> enables threads to share the processor. With this approach, concurrency using 
> multithreading can be achieved even on single processors. On multicore 
> platforms, these threads can possibly be scheduled on different CPU cores. In 
> hardware, the management of thread is done by the operating system (OS), and 
> the JVM uses the facility provided by the OS.

D is the same.  In essence, a Thread in D is equivalent to a kernel thread and 
in fact forwards all of the real work to the appropriate kernel calls.


> My second question is: What is the difference between working of goroutine in 
> Go and threads spawned in D. Both work concurrently with the caller (parent).

A D Fiber is closer to a goroutine, but Fibers are still somewhat simpler / 
lower-level.  The stack for a Fiber is allocated on creation and fixed in size, 
and scheduling is done manually via the call() method.

Reply via email to