On 06/29/2013 01:35 PM, Gary Willoughby wrote:
I want to spawn a few worker threads to do some processing but i want
the spawned function to have access to a shared object. How do i
accomplish this?

I'm currently passing it as a parameter and getting the error: "Aliases
to mutable thread-local data not allowed."

You must pass a shared object:

import std.stdio;
import std.concurrency;
import core.thread;

class C
{
    void foo_shared() shared
    {}

    void bar_notshared() const
    {}
}

void worker(shared(C) c)
{
    c.foo_shared();

    // Does not compile:
    // c.bar_notshared();
}

void main()
{
    auto c = new shared(C)();

    spawn(&worker, c);

    thread_joinAll();
}

Ali

Reply via email to