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