Error running concurrent process and storing results in array
data pulverizer
data.pulverizer at gmail.com
Wed May 6 03:25:41 UTC 2020
I have been using std.parallelism and that has worked quite
nicely but it is not fully utilising all the cpu resources in my
computation so I though it could be good to run it concurrently
to see if I can get better performance. However I am very new to
std.concurrency and the baby version of the code I am trying to
run:
```
void main()
{
import std.concurrency;
import std.stdio: writeln;
void process(double x, double y, long i, shared(double[]) z)
{
z[i] = x*y;
}
long n = 100;
shared(double[]) z = new double[n];
for(long i = 0; i < n; ++i)
{
spawn(&process, cast(double)(i), cast(double)(i + 1), i, z);
}
writeln("z: ", z);
}
```
Illicits the following error:
```
onlineapp.d(14): Error: template std.concurrency.spawn cannot
deduce function from argument types !()(void delegate(double x,
double y, long i, shared(double[]) z) pure nothrow @nogc @safe,
double, double, long, shared(double[])), candidates are:
/dlang/dmd/linux/bin64/../../src/phobos/std/concurrency.d(460):
spawn(F, T...)(F fn, T args)
with F = void delegate(double, double, long, shared(double[]))
pure nothrow @nogc @safe,
T = (double, double, long, shared(double[]))
must satisfy the following constraint:
isSpawnable!(F, T)
```
More information about the Digitalmars-d-learn
mailing list