On Sunday, 25 November 2012 at 19:29:43 UTC, Sparsh Mittal 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.
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).
Correct me wherever wrong.
My interest in D and Go is using them for parallelizing
scientific applications.
Your second question was indirectly answered already by informing
you about Fibers. The difference is exactly the same as
difference between D's Fibers and Threads.