digitalmars.D.learn - Passing a instance of a class to a thread via spawn?
- Gary Willoughby (5/5) Jun 29 2013 I want to spawn a few worker threads to do some processing but i
- =?UTF-8?B?QWxpIMOHZWhyZWxp?= (25/30) Jun 29 2013 You must pass a shared object:
- Gary Willoughby (1/2) Jun 30 2013 Thanks!
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."
Jun 29 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
Jun 29 2013