D中的单线程未来/承诺?

时间:2014-02-03 13:15:44

标签: d

我看到D有期货,可以创建线程,但是有没有像“Dart”期货/承诺(或者我猜javascript,如果你使用库)?

我希望能够编写这样的代码 -

//
// NOT D code because I can't remember all the syntax!
//
auto fut = myfile.read();

fut.then(function(data) { 
    // Process data asynchronously when the future completes
};

我希望回调在与主代码相同的线程上。这可能需要某种偶数队列和事件调度。 我认为boost中的ASIO为C ++提供了一些类似的功能,但是具有更好语法的东西会很好。

核心D中是否有类似的内容,或者为异步代码实现单线程期货的简单方法?

2 个答案:

答案 0 :(得分:3)

我建议你看一下vibe.d:http://vibed.org/ 它使您能够编写高性能事件驱动的代码,就像您从nodejs中所知,但是使用D的光纤以同步方式编写代码:http://dlang.org/phobos/core_thread.html#.Fiber

答案 1 :(得分:1)

std.parallelism库可用于模拟期货和承诺。我还没有尝试过,但它在库的页面和article discussing concurrency in D上都有记录。即使它没有明确地使用“未来”和“承诺”这两个词,它看起来也很容易。