次のように 実行されるメソッドがあるとします。
public void run()
{
for(i=loopstart;i<loopend;i++){
//some code here to execute. no dependency exists
}
loopstart および loopend変数には、ループ実行の最小値と最大値があります。
今私がしなければならないことは、並列に実行するために、このループの実行を 2 から 5 のスレッドに分割することです。これを達成するために、私はこの方法を次のように変更しました
public void run()
{
for(i=thread_start; i<thread_end; i++)
//some code here to execute.
}
変数thread_startとthread_endは、各スレッドが実行する必要のある範囲です。ループ実行をどのように分割するのが最善でしょうか。範囲内でループ実行があるとします
5-94
スレッドの数に応じて、実行のために多くの範囲に分割したいと考えています。
例えば
threads ranges
2 5-44, 45-94
3 5-34, 35-65, 66-94
これらは単なる例です (正確ではありません)。利用可能なスレッドに基づいて実行を分割したい。2スレッド
の場合、
thread_start=5 ,thread_end=44 1st thread
thread_start=45 ,thread_end=94 2nd thread.
どのように (Java コードを使用して) ループの実行をほぼ同じ長さの範囲に分割する必要がありますか?