D是否有未来/承诺?

D是否有未来/承诺?,d,D,我想基于实现我自己的任务系统 我想大致这样做 自动光纤=新光纤(){ someFunction(); }); 然后我想把这根纤维给我所创造的一根线。这不应该是个问题 但有时我想得到一个结果,也许someFunction的类型是int function() auto t=task!someFunction(); 自动光纤=新光纤(){ 工作队; }); submitFiberToSomeThreadPool(光纤); 但我似乎不能使用这样的任务。似乎我必须将其提交到任务池中,或者我必须调用我不

我想基于实现我自己的任务系统

我想大致这样做

自动光纤=新光纤(){
someFunction();
});
然后我想把这根纤维给我所创造的一根线。这不应该是个问题

但有时我想得到一个结果,也许
someFunction
的类型是
int function()

auto t=task!someFunction();
自动光纤=新光纤(){
工作队;
});
submitFiberToSomeThreadPool(光纤);
但我似乎不能使用这样的
任务。似乎我必须将其提交到任务池中,或者我必须调用我不想要的
executeInNewThread


这是否意味着我必须实现我自己的未来承诺系统?

光纤是一个非常基本的原语。在vibe.d中实现了一个更高级别的任务系统——具体来说,您的问题似乎适合这个系统

导入vibe.core.core;
导入vibe.core.concurrency;
空干管()
{
//“根”任务,因为不能挂起主
//线,因为它没有被纤维包裹
运行任务({
自动未来=异步({
睡眠(500毫秒);
返回42;
});
睡眠(250毫秒);
int value=future.getResult();
exitEventLoop();
});
runEventLoop();
}

那么您想在光纤和调用者之间传递值/将它们作为屈服函数中的参数传递吗?我查看了演示文稿,标题“使用光纤并行化顽皮的狗引擎”吸引了我的眼球。-有人怎么能把术语“平行”和“纤维”放在一起呢?纤维和平行之间没有任何内在的矛盾。使用N个线程+M个线程比使用N个线程更好,这是我在不阅读演示文稿的情况下所期望的。正确的术语是并发性,而不是并行性。如果你有一个核心运行你的应用程序,你不能有并行!另一方面,你可以有线,和纤维!