Hello!

I try to send shared pointer to struct:

[code]
import std.stdio;
import std.concurrency;

shared struct S(T, uint M)
{
        T[M] x;
}

shared struct M
{
        int x;
}


private void runner(T)()
{
        shared(T*) s = receiveOnly!(shared(T*))();
        writeln(s.x.length);
        writeln(s.x[0]);
        send(thisTid, true);
}

int main(string[] argv)
{
        alias S!(M, 2) TS;
        alias shared(TS*) PS;

        Tid runnerTid = spawn(&runner!(TS));

        auto s = new shared(TS);
        s.x[0] = M(42);
        send(runnerTid, s);

        bool ok = receiveOnly!bool();

        return 0;
}
[/code]

But after evaluating line "shared(T*) s = receiveOnly!(shared(T*))();" I get an exception:

"First-chance exception: std.concurrency.MessageMismatch Unexpected message type: expected 'shared(S!(M, 2u)*)', got 'shared(engine.S!(M, 2u).S)*' at std\concurrency.d(224)"

How can I pass shared pointer to "runner" thread correctly?

Reply via email to