次の関数を並列化しようとしていますが、方法がわかりません。
public static Cell GetClosestCell (Cell cell)
{
// The four calls below should be run in parallel.
Cell temp1 = new FindNorth(cell);
Cell temp2 = new FindSouth(cell);
Cell temp3 = new FindWest(cell);
Cell temp4 = new FindEast(cell);
// Return smallest cell based on [X].
if ((temp1.X < temp2.X) && (temp1.X < temp3.X) && (temp1.X < temp4.X))
{
return (temp1);
}
else if ((temp2.X < temp3.X) && (temp2.X < temp4.X))
{
return (temp2);
}
else if (temp3.X < temp4.X)
{
return (temp3);
}
else
{
return (temp4);
}
}
4 つの関数呼び出しはそれぞれ並列に実行する必要がありますが、スレッドを開始する必要はありません。つまり、各呼び出しをディスパッチできる入力を待機している 4 つのスレッドが既に実行されている必要があります。
私は並列ループの通常のパラダイムに慣れており、これにアプローチする方法がわかりません (少なくともクリーンな方法ではありません)。