On 11/27/2012 01:03 PM, Dejan Lekic wrote:
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.
Not really. "goroutines" typically have a smaller memory footprint
because they use a growable stack and they are multiplexed to threads by
the runtime. Fibers need to be scheduled manually.