在退出主线程之前等待异步文件写入完成
Wait for async file write to finish before exiting main thread
使用 experimental/filesystem 和 std::async 有没有办法确保文件写入在退出主线程之前完成?
用于调用异步函数的代码
std::vector<std::future<void>> img_Futures;
for (int i = 0; i < parsedResult.size(); i++)
{
img_Futures.push_back(std::async(std::launch::async, downloadImage, parsedResult[i], baseFolderPath, i));
}
最终发生的事情是它写入了大部分文件,但是有些文件留在了 0 字节处,因为(我认为)主线程在它们有时间写入它们之前就退出了。
您可以对每个期货调用 std::future::wait()
。这将阻塞直到未来的结果可用,即直到你的 downloadImage()
函数完成。
使用 experimental/filesystem 和 std::async 有没有办法确保文件写入在退出主线程之前完成?
用于调用异步函数的代码
std::vector<std::future<void>> img_Futures;
for (int i = 0; i < parsedResult.size(); i++)
{
img_Futures.push_back(std::async(std::launch::async, downloadImage, parsedResult[i], baseFolderPath, i));
}
最终发生的事情是它写入了大部分文件,但是有些文件留在了 0 字节处,因为(我认为)主线程在它们有时间写入它们之前就退出了。
您可以对每个期货调用 std::future::wait()
。这将阻塞直到未来的结果可用,即直到你的 downloadImage()
函数完成。