好的,所以我有一种强烈的感觉,这很容易实现,而且在其他语言中确实很容易做到这一点。只有我的C ++不是我最强的语言,所以我无法理解应该如何做到这一点。
我有一个执行某些启动操作的函数,然后通过它的一部分需要执行一些I / O并从另一个进程获取数据。当然我可以用回调来做到这一点,但我想避免这样做:
startupPt1() {
/* stuff */
ioCall(startupPt2());
}
startupPt2() {
/* rest of stuff */
}
我真的想避免这种情况,因为这里的第1部分和第2部分中发生的操作之间没有逻辑分离,只是存在一些我们希望在它们之间异步发生的I / O.
我目前认为我会使用上面的回调,但除此之外我不知道应该做什么。
答案 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()
之后,唯一可以保证完成的时间。