Parallelism and Concurrency Geek
Date: | 2014-11-20 |
Begins: | 11:10 |
Ends: | 11:50 |
Room: | Grande 1 |
Level: | Intermediate |
Track: | Hardcore coding |
Topics: | Concurrency, Parallelism, Threads and Locks, Actors, Functional Programming, Java, Clojure, Scala |
Your software needs to leverage multiple cores, handle thousands of users and terabytes of data, and continue working in the face of both hardware and software failure. Concurrency and parallelism are the keys to this new world.
But writing multithreaded code is *hard*. Even harder than most people realise. Do you know how to avoid deadlock? Livelock? Do you know what the memory model says about when it’s safe for one thread to read changes made by another? Or why you shouldn’t call a foreign function while holding a lock? And threads and locks give you no help when it comes to distribution, fault-tolerance or exploiting data parallel architectures.
The good news is that there are other approaches, including actors, communicating sequential processes and functional programming, that avoid the pitfalls of threads and locks.