How create a function that receive a function and run it in another threading?

Alexandru Ermicioi alexandru.ermicioi at gmail.com
Mon Dec 30 08:22:56 UTC 2019


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.


More information about the Digitalmars-d-learn mailing list