我想创建一个执行结构或类的成员函数的任务:
import std.parallelism, std.stdio;
struct S {
void foo() {
writeln("S.foo()");
}
}
void main() {
S s;
auto pool = new TaskPool();
auto t = task!(s.foo)(); // error
pool.put(t);
pool.finish();
}
我怎样才能做到这一点?我也试过使用代表无济于事。
编辑:我发现了一个可能相关的问题here。
答案 0 :(得分:3)
import std.parallelism, std.stdio;
struct S {
void foo() {
writeln("S.foo()");
}
}
void main() {
S s;
auto pool = new TaskPool();
auto t = task(&s.foo); // Constructor taking a runtime function pointer, delegate or callable (opCall).
pool.put(t);
pool.finish();
}
输出:
S.foo()
你也可以使用scopedTask
,但是你必须等到任务完成才能返回。 TaskPool.finish
不等待。