Threadpools, difference between DMD and LDC

Dicebot via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Aug 4 09:21:06 PDT 2014


On Monday, 4 August 2014 at 14:56:36 UTC, Philippe Sigaud via 
Digitalmars-d-learn wrote:
> On Mon, Aug 4, 2014 at 3:36 PM, Dicebot via Digitalmars-d-learn
> <digitalmars-d-learn at puremagic.com> wrote:
>
>> Most likely those threads either do nothing or are short 
>> living so you don't
>> get actually 10 000 threads running simultaneously. In general 
>> you should
>> expect your operating system to start stalling at few 
>> thousands of
>> concurrent threads competing for context switches and system 
>> resources.
>> Creating new thread is rather costly operation though you may 
>> not spot it in
>> synthetic snippets, only under actual load.
>>
>> Modern default approach is to have amount of "worker" threads 
>> identical or
>> close to amount of CPU cores and handle internal scheduling 
>> manually via
>> fibers or some similar solution.
>
> That's what I guessed. It's juste that I have task that will 
> generate
> other (linked) tasks, in a DAG. I can use a thread pool of 2-8
> threads, but that means storing tasks and their relationships 
> (which
> is waiting on which, etc). I rather liked the idea of spawning 
> new
> threads when I needed them ;)

vibe.d additions may help here:

http://vibed.org/api/vibe.core.core/runTask
http://vibed.org/api/vibe.core.core/runWorkerTask
http://vibed.org/api/vibe.core.core/workerThreadCount

"task" abstraction allows exactly that - spawning new execution 
context and have it scheduled automatically via underlying 
fiber/thread pool. However, I am not aware of any good tutorials 
about using those so jump in at your own risk.

>>
>> If you are totally new to the topic of concurrent services, 
>> getting familiar
>> with http://en.wikipedia.org/wiki/C10k_problem may be useful :)
>
> I'll have a look. I'm quite new, my only knowledge comes from 
> reading
> the concurrency threads here, std.concurrency, std.parallelism 
> and
> TDPL :)

Have fun :P It is rapidly changing topic though, best practices 
may be out of date by the time you have read them :)


More information about the Digitalmars-d-learn mailing list