2012-03-06 24 views
1

この質問は、おそらくディスクの読み込みスケジューリングに関するいくつかの洞察を持っている人にとって最適です。 (としてJava Forループの配列

for(int i = readqueue_tail; i<readqueue_head; i++) 

は、私は、キューがいっぱいになると、それは0から再び充填を開始し、しかし255まで上昇readqueue配列で要素にアクセスするために私を使用します。

私は、コードを持っていますこれらの要求は処理されても問題はありません)。

ヘッドがループして0をもう一度過ぎると、ループ状態が失敗するように、tailqueからreadqueue_headまで検索しています。これを修正するにはどうすればいいですか?

答えて

3

その他のオプションは、モジュロを使用しています。

int i = readqueue_tail; 
while (i != readqueue_head) 
{ 
    i = (i + 1) % 256; 
} 
+0

完璧、ありがとう! – gdrules

2
int i = readqueue_tail; 
boolean stop = false; 
while(!stop) { 
    // process the queue item 

    // advance the position 
    if(i<readqueue_head) { 
    i++) 
    } else { 
    i = readqueue_tail; 
    } 
} 

これはあなたのやりたいことですか?

+0

助けてくれてありがとう、私はこれを使い始めましたが、モジュロ(less code ^^)に切り替えました。 – gdrules

1
for(int i = readqueue_tail; i<readqueue_head; i++) { 
if(readqueue_tail == readqueue_head) 
break; 
} 
+0

ありがとうございました:) – gdrules

0
for(int i = readqueue_tail; i<readqueue_head; i++) { 
if (i == readqueue_head) { 
    i = readqueue_tail; 
} 
} 

だけ明確にすること、これは無限ループです。