我似乎无法理解为什么这不起作用.我无休止地搜索,并没有看到我的示例如何不启动异步操作.
void Folder::NewFileAction()
{
if (Folder::Match)
{
LOG(LOG_INFO) << "New file detected. Compressing";
auto Compress = async(launch::async, &ZipFile, Folder::FilePath);
}
}
Run Code Online (Sandbox Code Playgroud)
这不应该在另一个线程中启动异步操作吗?我必须在Visual Studio 2015中启用一个标志吗?
谢谢
std::async返回一个std::future对象.由于Compress是本地对象(类型std::future),并且将超出范围.由于这只是保存async返回结果的对象,因此析构函数将继续等待.您应该将此类对象保留在此类的成员中(vector<future>可能是).