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