Thread overview | ||||||
---|---|---|---|---|---|---|
|
December 27, 2019 How create a function that receive a function and run it in another threading? | ||||
---|---|---|---|---|
| ||||
import std; import core.thread; auto threading(lazy void fun){ return task!fun().executeInNewThread(); } void main(){ threading(writeln("Hello World!")); } I want to create a function threading() to run some function in other threading, but I get this error bellow. How can I get success? Error: static function Programa.threading.Task!(fun).Task.impl cannot access frame of function Programa.threading Error: template instance `Programa.threading.Task!(fun)` error instantiating |
December 27, 2019 Re: How create a function that receive a function and run it in another threading? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Marcone | On Friday, 27 December 2019 at 06:08:16 UTC, Marcone wrote: > import std; > import core.thread; > > auto threading(lazy void fun){ return task!fun().executeInNewThread(); } > > void main(){ > threading(writeln("Hello World!")); > } > > > I want to create a function threading() to run some function in other threading, but I get this error bellow. How can I get success? > > > Error: static function Programa.threading.Task!(fun).Task.impl cannot access frame of function Programa.threading > Error: template instance `Programa.threading.Task!(fun)` error instantiating This works: import std; import core.thread; auto threading(void function() fun){ return task(fun).executeInNewThread(); } void main(){ writeln("Main: ", thisTid); threading({ writeln("Hello, ", thisTid); }); } |
December 28, 2019 Re: How create a function that receive a function and run it in another threading? | ||||
---|---|---|---|---|
| ||||
Posted in reply to mipri | On Friday, 27 December 2019 at 07:06:52 UTC, mipri wrote:
> On Friday, 27 December 2019 at 06:08:16 UTC, Marcone wrote:
>> import std;
>> import core.thread;
>>
>> auto threading(lazy void fun){ return task!fun().executeInNewThread(); }
>>
>> void main(){
>> threading(writeln("Hello World!"));
>> }
>>
>>
>> I want to create a function threading() to run some function in other threading, but I get this error bellow. How can I get success?
>>
>>
>> Error: static function Programa.threading.Task!(fun).Task.impl cannot access frame of function Programa.threading
>> Error: template instance `Programa.threading.Task!(fun)` error instantiating
>
> This works:
>
> import std;
> import core.thread;
>
> auto threading(void function() fun){ return task(fun).executeInNewThread(); }
>
> void main(){
> writeln("Main: ", thisTid);
> threading({ writeln("Hello, ", thisTid); });
> }
Very Good! Thank you:
import std;
import core.thread;
alias threading = compose!(fun => fun.executeInNewThread(), fun => task(fun));
void main(){
threading({writeln("Ola Mundo!");});
}
|
December 30, 2019 Re: How create a function that receive a function and run it in another threading? | ||||
---|---|---|---|---|
| ||||
Posted in reply to mipri | On Friday, 27 December 2019 at 07:06:52 UTC, mipri wrote: > On Friday, 27 December 2019 at 06:08:16 UTC, Marcone wrote: >> import std; >> import core.thread; >> >> auto threading(lazy void fun){ return task!fun().executeInNewThread(); } >> >> void main(){ >> threading(writeln("Hello World!")); >> } >> >> >> I want to create a function threading() to run some function in other threading, but I get this error bellow. How can I get success? >> >> >> Error: static function Programa.threading.Task!(fun).Task.impl cannot access frame of function Programa.threading >> Error: template instance `Programa.threading.Task!(fun)` error instantiating > > This works: > > import std; > import core.thread; > > auto threading(void function() fun){ return task(fun).executeInNewThread(); } > > void main(){ > writeln("Main: ", thisTid); > threading({ writeln("Hello, ", thisTid); }); > } or you can use just https://dlang.org/library/std/concurrency/spawn.html from std.concurrency to avoid needless bike construction. Best regards, Alexandru. |
Copyright © 1999-2021 by the D Language Foundation