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.
