Light-weight threads
Robert Jacques
sandford at jhu.edu
Wed Feb 24 08:41:42 PST 2010
On Wed, 24 Feb 2010 04:15:03 -0500, Norbert Nemec
<Norbert at nemec-online.de> wrote:
> Hi there,
>
> I just found that recent change in the language to make all global
> variables thread-local by default. This makes me think of a major
> performance problem: every thread creation will have to copy all the
> thread-local variables. This makes it impossible to efficiently spawn
> many light-weight threads even if they do not make use of the global
> variables at all.
>
> I guess I am not the first one to spot this problem? I believe that
> thread creation should come with as little overhead as possible. Maybe a
> concept of light-weight threads based on side-effect free code could
> complement the regular threads?
>
> Just a quick idea to throw into discussion...
>
> Greetings,
> Norbert
Norbert, you are confusing threads with fibers. OS Threads have never
been, nor will ever be, "light-weight" in any sense of the word. If they
were, no one would care about thread-pools and the like. Languages that
feature light-weight threads, such as Erlang, are actually spawning
fibers. The Erlang runtime, for example, only ever uses one D style thread
to host millions of 'logical' threads.
Basic fiber support is already in druntime. Actually, it looks like the
std.thread and std.concurrency updates will internally use either a thread
pool or a fiber based back-end, so you might not have to worry about it.
If you're simply looking for a task library, dsimcha has been working on
one as have others (look in scrapple and for the blip project on dsource,
IIRC)
More information about the Digitalmars-d
mailing list