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