将一部分异步代码插入到C ++函数中

时间:2016-09-29 19:28:24

标签: c++ asynchronous

好的,所以我有一种强烈的感觉,这很容易实现,而且在其他语言中确实很容易做到这一点。只有我的C ++不是我最强的语言,所以我无法理解应该如何做到这一点。

我有一个执行某些启动操作的函数,然后通过它的一部分需要执行一些I / O并从另一个进程获取数据。当然我可以用回调来做到这一点,但我想避免这样做:

startupPt1() {
 /* stuff */
 ioCall(startupPt2());
}

startupPt2() {
 /* rest of stuff */
}

我真的想避免这种情况,因为这里的第1部分和第2部分中发生的操作之间没有逻辑分离,只是存在一些我们希望在它们之间异步发生的I / O.

我目前认为我会使用上面的回调,但除此之外我不知道应该做什么。

1 个答案:

答案 0 :(得分:2)

好的,只是为了详细说明我的评论,你可能想要这样的东西:

#include<future>

//...

void startup() {
    // part 1
    auto result = std::async([](){
        // IO part
    });
    // part 2 not relying on the result of IO
    // part 2 that uses IO result as result.get()
}

这将允许操作系统为您安排IO工作。在您致电results.get()之后,唯一可以保证完成的时间。