This might be a useful document to present to potential customers who ask "You want to charge us how much for fixing our multithreaded code?"
I've found myself drawn to the Java platform for platform-independent multithreading. Or any multithreading, actually, and I dislike Java-the-language with a vengeance.
These days I'm using Clojure, although I haven't yet used its STM in performance-critical situations. I'll have to see how that goes, but the functional programming model goes a long way to encourage doing it right: even if I did end up tossing out the STM and rolling my own atomic + lock-based system for an app that's limited by the STM's performance, it isolates the synchronisation issue logically.
I've found myself drawn to the Java platform for platform-independent multithreading. Or any multithreading, actually, and I dislike Java-the-language with a vengeance.
These days I'm using Clojure, although I haven't yet used its STM in performance-critical situations. I'll have to see how that goes, but the functional programming model goes a long way to encourage doing it right: even if I did end up tossing out the STM and rolling my own atomic + lock-based system for an app that's limited by the STM's performance, it isolates the synchronisation issue logically.