spawn and wait
Puming via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Thu Jul 3 04:20:50 PDT 2014
On Thursday, 3 July 2014 at 04:51:07 UTC, Ali Çehreli wrote:
> On 07/02/2014 08:29 PM, Puming wrote:
>
> > I want to spawn several similar tasks and then wait for all
> of them to
> > complete to go on do some other things
>
> If you don't care about account for each of them individually,
> core.thread.thread_joinAll would work. The following program
> starts two waves of threads and waits for both of the waves to
> complete:
>
> import std.stdio;
> import std.concurrency;
> import core.thread;
>
> void foo(Duration duration)
> {
> writefln("Working for %s", duration);
> Thread.sleep(duration);
> }
>
> void spawnThreads(size_t count)
> {
> foreach (i; 0 .. count) {
> spawn(&foo, (i + 1).seconds);
> }
> writefln("Started %s workers", count);
> }
>
> void main()
> {
> spawnThreads(2);
> writefln("Waiting for all to finish");
> thread_joinAll();
>
> spawnThreads(3);
> writefln("Waiting for all to finish");
> thread_joinAll();
> }
>
> Ali
Thanks that is what I'm looking for
More information about the Digitalmars-d-learn
mailing list