On Wednesday, 22 March 2023 at 07:16:43 UTC, Kagamin wrote:
static is thread local by default.
```
module main;
import app;
import core.thread;
int main(string[] args)
{
static shared int result;
static shared string[] args_copy;
static void app_thread()
{
App app = new App();
result = app.run(args_copy);
}
args_copy = cast(shared)args;
// Running app interface in a thread;
Thread thread = new Thread(&app_thread).start();
thread.join();
return result;
}
```
It seems work, but I have to change "int App.run(string[] args)"
to "App.run(shared string[] args)" in app module and
`std.getopt.getopt` throws me an error in the same module:
Error: none of the overloads of template `std.getopt.getopt` are
callable using argument types `!()(shared(string[]), string,
string, string*)`
/usr/include/dmd/phobos/std/getopt.d(420,14): Candidate
is: `getopt(T...)(ref string[] args, T opts)`