C++ 可以终止std::async线程吗?

C++ 可以终止std::async线程吗?,c++,c++17,c++20,C++,C++17,C++20,我有下面的代码,我异步调用它下载一个文件,我想终止线程?如何做到这一点 std::future<BOOL> fut = std::async(std::launch::async,&download::downloadBlob2File,&t_oftcdownload,stol(blocksize), downldUrl, token,name, path, ID); std::chrono::hours span (2); int t_iResult = -1;

我有下面的代码,我异步调用它下载一个文件,我想终止线程?如何做到这一点

std::future<BOOL> fut = std::async(std::launch::async,&download::downloadBlob2File,&t_oftcdownload,stol(blocksize), downldUrl, token,name, path, ID);
 std::chrono::hours span (2);
 int t_iResult = -1;

 if (fut.wait_for(span)==std::future_status::timeout)
 {
  t_iResult=0;
 }
std::future fut=std::async(std::launch::async,&downloadBlob2File,&t\u of tcdownload,stol(blocksize),downldUrl,token,name,path,ID);
标准时间:小时跨度(2);
int t_iResult=-1;
如果(未来等待(span)=标准::未来状态::超时)
{
t_iResult=0;
}

您可以这样做,但前提是您可以自己编写代码。您可以构建一个机制来与希望它停止的另一个线程通信,该线程可以经常检查该机制,以查看是否有人告诉它中止

async
中没有内置的机制来帮助您做到这一点。C++20具有和类型,这是一种通信机制。但是您必须将
stop\u令牌
传递给异步函数,并且必须写入该令牌以定期手动检查该机制,以查看它是否应该停止

C++没有强制线程停止的机制;停止一个线程是目标线程必须同意做的事情,因此必须设计它来做