Concurrent Programming Models

Distinguishing Parallel Programming and Concurrent Programming

Parallel Programming 

Multiple-processor or multi-core programming

Concurrent Programming 

Multi-threaded programming

Concurrent Programming Models

  • Threads and lock-based Synchronization
    • Java
  • Functional programming model 
    • Pure Functions with no side-effects + Immutable Data Structures
  • Actor based message passing
    • Scala
    • Erlang
    • Clojure
  • Channel based message passing
    • Go
    • Unix processes-pipes
  • STM (Software Transactional Memory) 
    • Clojure
  • Non-blocking I/O or asynchronous I/O
    • Callback Functions
      • Node.JS: Event driven programming and Callback Functions.