How multithreading works in hardware using D ==AND== difference b/w goroutine and threads in D

Timon Gehr timon.gehr at gmx.ch
Tue Nov 27 08:05:20 PST 2012


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.


More information about the Digitalmars-d mailing list