Task when used on a function that takes parameters doesnt work.

Daniel Kozak kozzi11 at gmail.com
Thu Nov 12 15:12:55 UTC 2020


On Thu, Nov 12, 2020 at 4:05 PM Ruby The Roobster via Digitalmars-d-learn <
digitalmars-d-learn at puremagic.com> wrote:

> Here is a test that I did:
>
> void func(int i)
> {
> Thread.sleep(i.seconds);
> }
> void main() {
> auto test = Task!func(3);
> test.executeInNewThread();
> test.yeildForce();
> }
>
> This gives the following errors(I'm using Code::Blocks as an IDE
> by the way, so this is what the IDE outputted):
> d:\Programs\D\dmd2\windows\bin\..\..\src\phobos\std\parallelism.d|516|Error:
> function `hello.func(int i)` is not callable using argument types `()`|
>
> d:\Programs\D\dmd2\windows\bin\..\..\src\phobos\std\parallelism.d|516|
>    missing argument for parameter #1: `int i`|
>
> hello.d|8|Error: template instance `std.parallelism.Task!(func)`
> error instantiating|
>
>
> Any fix for this?
>

You have some typos there

import core.thread;
import std.parallelism;

void func(int i)
{
    Thread.sleep(i.seconds);
}
void main() {
    auto test = task!(func)(3);
    test.executeInNewThread();
    test.yieldForce();
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/digitalmars-d-learn/attachments/20201112/c36dae85/attachment.htm>


More information about the Digitalmars-d-learn mailing list