On 02/17/2013 08:23 AM, Sparsh Mittal wrote:
> I am seeing
>
> http://dlang.org/phobos/std_parallelism.html#.TaskPool

Please also consider:

  http://ddili.org/ders/d.en/parallelism.html

> I am running the example of parallel foreach given in that section.
>
> Sorry if it is too obvious, but my question is when using
>
>
> foreach(i, ref elem; taskPool.parallel(logs)) { elem = log(i + 1.0); }
>
> where taskPool is not explicitly defined,

That is a pre-defined object of the std.parallelism module.

> how do I specify number o
> worker threads?

You cannot change taskPool. It is started with one less than the total cores of the system.

> I don't know when is constructor of TaskPool called and
> hence when
>
> /////// @trusted this(size_t nWorkers);
> /////// Allows for custom number of worker threads.
>
> function which allows for setting number of threads, is called.
>
> I will be thankful for your help.

You must construct a separate TaskPool object and use that one for your special needs. The following example from the link above uses just 2 cores:

import std.stdio;
import std.parallelism;

void main()
{
    auto workers = new TaskPool(2);

    foreach (i; workers.parallel([1, 2, 3, 4])) {
        writefln("Working on %s", i);
    }

    workers.finish();
}

Ali

Reply via email to