私はint配列、要素num
と4スレッドを持っているとします。 num
を検索するために各スレッドに1/4の配列を与えています。 (検索方法は以下のとおりである)私の「トップレベル」でスレッド間の通信でのparellelの検索
public static boolean contains(int[] array, int minIdx, int maxIdx, int num) { ...}
、私は配列の4四半期検索する4つのスレッドをスケジュールすることができますが、どのように私はすべてのスレッドは、すぐ一つとして検索を停止することを確認します(配列に重複がないと仮定すると、その要素はたかだか1回しか出現することはできません)。
P.S:私の4番目のスレッドが最初の反復で要素を見つけたとします。他の3人のユーザーが完了するのを待つのではなく、トップレベルのメソッドをすぐに返すようにします。
。 – Kayaman
* "それらの要素の1つが見つかるとすぐに" *ループ最適化を妨げる可能性のある単一のループ反復ごとに揮発性の読み込みが最小限であるため、最低限必要とする可能性があります。等価性検査が本当に高価でない限り、N回目の繰り返しをすべて確認することはコストがかかりません。警告出力は、オプティマイザが行う可能性のある推測よりも信頼性が高くなります。 – the8472
@ the8472これは実装固有のものであるため、信頼性が高くありません。単一のJVM実行のアセンブリー出力を信頼するよりも、優れたプログラミング慣用句を維持することをお勧めします。 –