试图让异步在Windows C++应用程序中工作

use*_*001 4 c++ asynchronous

我似乎无法理解为什么这不起作用.我无休止地搜索,并没有看到我的示例如何不启动异步操作.

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中启用一个标志吗?

谢谢

Aja*_*jay 7

std::async返回一个std::future对象.由于Compress是本地对象(类型std::future),并且将超出范围.由于这只是保存async返回结果的对象,因此析构函数将继续等待.您应该将此类对象保留在此类的成员中(vector<future>可能是).