On Thursday, 7 August 2014 at 18:23:26 UTC, Nordlöw wrote:
What is the best way to forward a string[] as argument to a function called through std.concurrency.spawn().

I need this in the following example where I start the vibe.d event loop in the main thread (the only way I've managed to get runEventLoop() to work) and run my other program logic in another which requires command line arguments to passed to the new thread.

void otherMain(string[] args)
{
    // use args
}

void main(string[] args)
{
    import std.concurrency: spawn;
auto otherMainTid = spawn(&otherMain, args); // this line fails
    runEventLoop();
}

The line calling spawn() fails as

/home/per/opt/x86_64-unknown-linux-gnu/dmd/linux/bin64/src/phobos/std/concurrency.d(442): Error: static assert "Aliases to mutable thread-local data not allowed."

If you don't care how you get the args to otherMain, you can also use Runtime.args. That way you wouldn't even need to pass it to the function in the first place.


http://dlang.org/phobos/core_runtime.html#.Runtime.args



Reply via email to