Visual C ++ 2010で同時実行ランタイムを使用していて、parallel_invokeおよびtask_group(PPLまたは並列パターンライブラリの一部)の機能に興味があります。(ラムダ関数や関数ポインターではなく)関数オブジェクトを介して2つの並列アクションを開始できるようにしたいのですが、エラーのためにコードをコンパイルできません:
error C3848: expression having type 'const C' would lose some const-volatile qualifiers in order to call 'void C::operator ()(void)'
しかし、C :: operator()()をconstにすると、関数オブジェクトの多くの利点が失われます。つまり、その状態は変更可能であり、呼び出し間で内部的に維持されます。ここで何かが足りませんか?非定数関数オブジェクトを並行して呼び出す方法はありますか?
ところで、非同期エージェントライブラリを使用して、Concurrency :: agentクラスからクラスを派生させることができることを認識していますが、この質問の範囲を超えていることを考慮してください(一部には例外処理とキャンセルオプションがないため)。
PPLで何ができるかに興味があり、ラムダ関数と関数ポインターを使用した例はありますが、並列の「HelloWorld」以上の機能を実行する関数オブジェクトを使用した例を見つけたり作成したりすることはできませんでした。関数オブジェクトと、可能であれば並行コンテナーも実際に活用するものを探しています。