1. ホーム
  2. c#

[解決済み] C#で3つのメソッドを並列に実行する最も簡単な方法

2023-06-24 01:49:40

質問

私は以下のような3つのメソッドを呼び出して、数値計算を行っています。

results.LeftFront.CalcAi();  
results.RightFront.CalcAi();  
results.RearSuspension.CalcAi(geom, vehDef.Geometry.LTa.TaStiffness, vehDef.Geometry.RTa.TaStiffness);

各関数は互いに独立しており、デッドロックのない並列計算が可能です。

3つすべてが完了するまで包含メソッドが終了することなく、これらを並列に計算する最も簡単な方法は何ですか?

どのように解決するのですか?

以下の TPLドキュメント . 彼らはこのサンプルをリストアップしています。

Parallel.Invoke(() => DoSomeWork(), () => DoSomeOtherWork());

というわけで、あなたの場合、これでうまくいくはずです。

Parallel.Invoke(
    () => results.LeftFront.CalcAi(),
    () => results.RightFront.CalcAi(),
    () => results.RearSuspension.CalcAi(geom, 
                                        vehDef.Geometry.LTa.TaStiffness, 
                                        vehDef.Geometry.RTa.TaStiffness));

EDITです。 すべてのアクションの実行が終了した後に、この呼び出しが返されます。 Invoke() は、本当に並列に実行されることを保証するものではなく、アクションの実行順序を保証するものでもありません。