スレッドセーフではない共有リソースに依存するタスクを並列化したいことがよくあります。次の非スレッドセーフクラスについて考えてみます。上の地図を作りたいですdata: Vector[String]
。
class Processor { def apply: String => String }
基本的に、それぞれがデータのインスタンスとパーティションをn
持つスレッドを作成したいと思います。Processor
Scalaの並列コレクションは、並列化は単純なものであるべきだと私を甘やかしてしまいました。ただし、この問題にはあまり適していません。はい、私はアクターを使用できますが、Scalaアクターは非推奨になる可能性があり、Akkaはやり過ぎのようです。
最初に頭に浮かぶのは、同期されたマップThread -> Processor
を作成してから、並列コレクションを使用してProcessor
、このスレッドセーフなマップで自分を検索することです。もっと良い方法はありますか?