のための並列からのアクセス配列Iは、次のコードがありますスカラ - スレッドセーフな方法で
//variable arrayToAccess is an array of integers
//anotherArray holds integers also
anotherArray.par.foreach{ item =>
val mathValue = mathematicalCalculation(item)
if (mathValue > arrayToAccess.last) {
//append element
arrayToAccess :+= mathValue
//sort array and store it in the same variable
arrayToAccess = arrayToAccess.sortWith((i1,i2) => i1 > i2).take(5)
}
}
を私はそのようにarrayToAccess変数へのアクセスはスレッドセーフではないと思われます。どのようにスレッドセーフな方法で上記のコードを実装できますか?また、anotherArray.parの並列性のレベルを制御することはできますか(たとえば、8つのうち2つのコアのみを使用できます)。そうでない場合、それを制御する方法はありますか?
'.seq.sorted.reverse.take(5)' – Aivean
@Aiveanありがとうございます。一定。 – Dima
anotherArray変数が大きい場合、ソートされたメソッドと逆のメソッドには時間がかかりますが、そうではありませんか?特にそれがより複雑なソート方法である場合。 –