ツリーデータ構造とそれにいくつかの操作を実装しています。すべてのノードには、いくつかの値、その親へのポインター、およびその子のリストがあります。ツリーを再帰的に移動し、ノードに格納されている最大値を見つける関数max_valueを実装しました。ここで、C ++ 11標準を使用して、同じことを行う非同期関数を実装したいと思います。私は次のコードを持っています:
template<typename T>
T Node<T>::max_value_async(void)
{
T current_value = p_value;
list<future<T>> results;
//launch tasks
for ( auto x : p_children)
{
results.insert(async(std::launch::async, x.max_value));
}
//wait for results
for (auto r : results)
r.wait();
//find highest value
for (auto r : results)
{
if (current_value < r.get())
current_value = r.get();
}
return current_value;
}
しかし、非同期機能を起動するのに問題があります。どうしたの?