Passing a instance of a class to a thread via spawn?
Ali Çehreli
acehreli at yahoo.com
Sat Jun 29 15:45:42 PDT 2013
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
More information about the Digitalmars-d-learn
mailing list