You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
According to [this terminology](http://chimera.labs.oreilly.com/books/1230000000929/ch01.html#sec_terminology) you should write a *parallel* and *deterministic*
3
+
program and (by all means!) let Scala deal with the *concurrency* aspect.
4
+
Or else your code could quickly get messy and error-prone with all kinds of nasty
5
+
concurrency bugs. In particular your program could become indeterministic
6
+
which spells in practice: very (in fact, VERY) hard to debug, test and reason about.
7
+
8
+
Having said that it might be a good idea to first write a sequential solution (and
9
+
use the test suite to verify it).
10
+
Only then should you try to parallelize it while keeping the sequential and parallel
11
+
portions of your code as separate as possible.
12
+
13
+
A first iteration could be using Scala's [parallel collections](http://docs.scala-lang.org/overviews/parallel-collections/overview.html). You might find
14
+
that this is almost too simple (especially if you have followed our advice and
15
+
already have a sequential solution).
16
+
17
+
For the second iteration we recommend you try a solution with [scala.concurrent.Future](http://www.scala-lang.org/api/current/scala/concurrent/Future$.html).
18
+
You can consult [this tutorial](http://danielwestheide.com/blog/2013/01/09/the-neophytes-guide-to-scala-part-8-welcome-to-the-future.html) and [its sequel](http://danielwestheide.com/blog/2013/01/16/the-neophytes-guide-to-scala-part-9-promises-and-futures-in-practice.html) for some help.
19
+
Make sure that you
20
+
- have only one single blocking call to wait for the result
21
+
- that it is at the very end of your program, and
22
+
- that it has a timeout.
23
+
24
+
`scala.concurrent.Future` is used in many libraries and the doctor's advice for
25
+
parallel and asynchronous programming in Scala. So it is essential for mastering
26
+
the language and it should become part of your Scala armory.
0 commit comments