Grokking concurrency, message passing and Co
Simen kjaeraas
simen.kjaras at gmail.com
Sun Jul 11 10:48:48 PDT 2010
Philippe Sigaud <philippe.sigaud at gmail.com> wrote:
> - Why is a 2 threads version repeatedly thrice as fast as a no thread
> version?
> I thought it'd be only twice as fast.
No idea.
> - 1024 threads are OK, but I cannot reach 2048. Why? What is the limit
> for the
> number of spawn I can do? Would that be different if each threads spawn
> two
> sub-threads instead of the main one generating 2048?
How many can you do, and what happens when you can't make more?
> - What is the official way to verify that all threads are done? As you
> can
> see, I used a while loop, but I'm reaching in the dark, there.
Tids pass a message of type MsgType.LinkDead when they close.
I'm not entirely sure how to check this, as I have no experience with
std.concurrency.
There is also thread_joinAll in core.thread, which "Joins all non-daemon
threads that are currently running."
> - I have to read TDPL again: in thread, is there any way to get the Tid
> of the
> thread that spawned you apart from waiting for it to send its Tid?
No. However, there is a private TLS variable in std.concurrency that
refers to the Tid of the owner thread.
Also, you could consider sending it as part of the function parameters.
> - is there any way to broadcast a message to a list of threads?
Nope. Well, of course, one could make a function what does it.
--
Simen
More information about the Digitalmars-d-learn
mailing list