Passing Command Line Arguments to a new Thread

Jeremy DeHaan via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Aug 7 12:26:34 PDT 2014


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





More information about the Digitalmars-d-learn mailing list