非同期で複数のメソッドを呼び出す必要があります。以下に簡単な例を示します。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++で実装できますか?私は別のスレッドで関数を呼び出す必要があります。この関数は値を返す。
ありがとう、私はそれをチェックします。コールバックのメカニズムはありませんか?タスクが完了したかどうかを確認する必要がありますか? –
はい、タスクが完了したかどうかを手動で確認する必要があります。 –