Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Concurrency models

Concurrency models

Concurrency models

Volodymyr Prokopyuk

October 06, 2015
Tweet

More Decks by Volodymyr Prokopyuk

Other Decks in Programming

Transcript

  1. CONCURRENCY VS PARALLELISM CONCURRENCY (PROBLEM DOMAIN) MULTIPLE SIMULTANEOUS EXECUTION OF

    DIFFERENT TASKS NON DETERMINISTIC, FAULT TOLERANCE (LET IT CRASH) PARALLELISM (SOLUTION DOMAIN) MULTIPLE SIMULTANEOUS EXECUTION OF THE SAME TASK DETERMINISTIC, PERFORMANCE
  2. EXECUTION MODEL MULTICORE PROCESSORS (PROCESSES, THREADS) SHARED MEMORY MODEL (NOT

    SCALABLE) DISTRIBUTED MEMORY MODEL (VIA NETWORK, SCALABLE)
  3. THREADS AND LOCKS (SHARED MEMORY) LOW LEVEL HARDWARE ABSTRACTION WITH

    NO CONSTRAINTS DATA RACE (TWO OR MORE WRITERS TO SHARED DATA) LOCK OR MUTUAL EXCLUSION (SEQUENTIAL ACCESS TO SHARED DATA) DEADLOCK (TWO OR MORE LOCKS IN THE SAME THREAD) LIVELOCK (DEADLOCK WITH TIMEOUTS, NO PROGRESS IS MADE)
  4. FUNCTIONAL PROGRAMMING (SHARED MEMORY) PURE FUNCTIONS (REFERENTIAL TRANSPARENCY, NO SIDE

    EFFECTS) IMMUTABLE PERSISTENT DATA STRUCTURES (STRUCTURE SHARING, VERSIONING) FUNCTION COMPOSITION OVER STATE MUTATING INSTRUCTIONS RECURSION WITH TCO OVER STATE MUTATING ITERATIONS (STATE PASSING VIA ARGUMENTS) DATA-ORIENTED PROGRAMMING (SEPARATE DATA AND FUNCTIONS) ABSTRACTION-ORIENTED PROGRAMMING (PROGRAM TO WELL KNOWN DATA ABSTRACTIONS)
  5. IDENTITY STATE SEPARATION (SHARED MEMORY) STATE IS A SEQUENCE OF

    VALUES OVER TIME (NOT A SINGLE VALUE) CURRENT STATE IS IMMUTABLE NO MATTER WHAT HAPPENS TO THE IDENTITY IN THE FUTURE IDENTITY IS A NAMED REFERENCE TO CONSTANTLY CHANGING STATE SOFTWARE TRANSACTIONAL MEMORY (ATOMIC, CONSISTENT, ISOLATED STATE UPDATES WITH RETRIES)
  6. PROMISES (SHARED MEMORY) PROMISE IS A REFERENCE TO A VALUE

    NOT YET AVAILABLE AND TO BE COMPUTED IT THE FUTURE CODE EXECUTES WHEN THE DATA IT DEPENDS ON BECOMES AVAILABLE PROMISES ARE COMPOSABLE WITH CONVENIENT ERROR HANDLING (RESOLVE, REJECT) PROMISES PROVIDE SEQUENTIAL INTERFACE TO ASYNCHRONOUS SYSTEMS
  7. ACTORS (SHARED AND DISTRIBUTED MEMORY) ACTOR (RECURSIVE LOOP RUNNING CONCURRENTLY

    WAITING FOR A MESSAGE TO PROCESS) ACTORS INTERNALLY OPERATE SEQUENTIALLY (PURE FUNCTIONS WITH PATTERN MATCHING ON MESSAGE TYPE) ACTORS ARE DECOUPLED FROM EACH OTHER BY MAILBOXES (ASYNCHRONOUS QUEUES) SUPERVISOR SEPARATES ERROR HANDLING (LET IT CRASH) FROM NORMAL OPERATION (HAPPY PATH, NO DEFENSIVE PROGRAMMING) ERROR-KERNEL PATTERN (DELEGATE DANGEROUS TASKS TO CHILD ACTORS TO PREVENT IMPORTANT STATE-CARRYING ACTOR FROM CRASHING) FAULT TOLERANCE AND SCALABILITY