Concurrency: It's harder (and easier) than you think

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.