C++ 尝试在Windows C++;应用
我似乎不明白为什么这行不通。我已经搜索了无数次,没有看到下面的示例如何不启动异步操作C++ 尝试在Windows C++;应用,c++,asynchronous,C++,Asynchronous,我似乎不明白为什么这行不通。我已经搜索了无数次,没有看到下面的示例如何不启动异步操作 void Folder::NewFileAction() { if (Folder::Match) { LOG(LOG_INFO) << "New file detected. Compressing"; auto Compress = async(launch::async, &ZipFile, Folder::FilePath);
void Folder::NewFileAction()
{
if (Folder::Match)
{
LOG(LOG_INFO) << "New file detected. Compressing";
auto Compress = async(launch::async, &ZipFile, Folder::FilePath);
}
}
void文件夹::NewFileAction()
{
如果(文件夹::匹配)
{
LOG(LOG_INFO)std::async
返回一个std::future
对象。由于Compress
是本地对象(类型为std::future
),将超出范围。因为这是保存async
返回结果的唯一对象,析构函数将继续等待。您应该保留此类对象在该类的成员中(avector
可能是)。您如何确定它没有启动异步操作?它正在继续阻止调用NewFileAction()的方法的执行。多个文件将同时进入,但在压缩完成之前不会得到处理。这可能是因为Compress
超出范围。请阅读std::future
的文档。因此,我是否应该使用向量跟踪对象,并将其添加为类本身的成员?