Passing a value by reference to function in taskPool

Ali Çehreli acehreli at yahoo.com
Fri Mar 1 20:00:41 PST 2013


On 03/01/2013 06:51 PM, Sparsh Mittal wrote:

 > Possibility 1: Here, I wanted to pass a value by reference to myFunc,
 > but when I read that value in main function, its value is not changed at
 > all?

This is a known issue and is documented in the std.parallelism module:

   http://dlang.org/phobos/std_parallelism.html#.Task

"BUGS: Changes to ref and out arguments are not propagated to the
call site, only to args in this struct."

You can pass a pointer:

void myFunc(long *countvar)
{
     *countvar = 500;
     writeln( " value of countvar is  ", *countvar);
}

// ...

     tasks[0] = task!myFunc(&count1);

Ali



More information about the Digitalmars-d-learn mailing list