我想多次調用異步方法。一個簡單的例子如下所示:C++中的多個異步調用
size_t counter(std::string &s)
{
return s.size();
}
void stringCountAccumulator()
{
std::vector<std::string> foos = {"this", "is", "spartaa"};
size_t total = 0;
for (std::string &s : foos)
{
std::future<size_t> fut = std::async(
std::launch::async,
counter, s);
total += fut.get();
}
std::cout << "Total: " << total;
}
看來,fut.get()會阻止其他將來的調用。我如何在C++中實現這個問題?我需要在一個單獨的線程中調用一個函數。這個函數「返回」一個值。
謝謝,我會檢查它。沒有任何回調機制?我是否必須檢查任務是否完成? –
是的,您必須手動檢查任務是否完成。 –