是否可以重新启动提升::未来
Is it possible to restart a boost::future?
我正在使用boost::future .then()功能。我写了一个以异步方式读取文件的小型反应堆。有一个函数readFileAsync(int fd),它从文件中返回数据的未来。当描述符准备就绪并实现承诺时,该反应器将读取固定数量的字节。但是,如果文件中可以有更多数据,我无法决定如何重新启动未来。这样做有什么用法?
readFileAsync(fd).then([&](auto future) {
auto data = future.get();
if (data.block.empty()) { // end of file
close(data.fd);
} else {
readFileAsync(data.fd).then(...); // XXX: how to work that out?
}
});
而不是匿名 lambda,创建正常的循环函数:
struct continue_reading
{
template <typename T>
void operator()(T future)
{
auto data = future.get();
if (data.block.empty()) { // end of file
close(data.fd);
} else {
readFileAsync(data.fd).then(continue_reading);
}
};
//...
readFileAsync(fd).then(continue_reading)
相关文章:
- WINAPI 注册应用程序重新启动时不清除打开的套接字
- 如何使用 ctypes 停止和重新启动从 Python 运行的C++代码
- 重新启动后,线程无法在 while 循环中再次运行
- 在程序和基于文本的游戏和C++内重新启动程序
- 在程序/基于文本的游戏/C++内重新启动程序
- 为什么使用 exec() 重新启动程序不能正常工作?
- 即使在我关闭应用程序并重新启动它后,如何保持我的 ID 被阻止?
- 有没有办法在不重新启动或注销的情况下加载游标?
- IO服务重新启动后,Boost最后期限计时器持续触发
- 在C++中重新启动随机数序列
- 稍后在构造函数中重新启动异常指令删除此指令
- 如何获取代码::块以在代码::块重新启动后保持库的配置?
- 我想在我设置的几秒钟后重新启动我的程序
- 如何使重新启动此循环,当用户输入 1 时,并在 0 时停止
- UDP 服务器每 5 秒重新启动一次
- 有没有办法检查内存缓存是否已重新启动?
- (Windows 10) 在不更新的情况下重新启动C++
- Live555MediaServer 在每个新连接时重新启动流。为什么将"reuseSource"设置为 true 无法按预期工作?
- OpenGL和SFML时钟未正确重新启动
- 是否可以重新启动提升::未来