concurrent programming in scala
play

Concurrent Programming in Scala 1 / 7 Concurrent Programming 1 - PowerPoint PPT Presentation

Concurrent Programming in Scala 1 / 7 Concurrent Programming 1 Concurrent programming: separate overlapping threads of execution, not necessarily run on separate processors/cores Parallel programming: separate threads of execution running


  1. Concurrent Programming in Scala 1 / 7

  2. Concurrent Programming 1 ◮ Concurrent programming: separate overlapping threads of execution, not necessarily run on separate processors/cores ◮ Parallel programming: separate threads of execution running on separate threads/cores ◮ Distributed programming: a program running on separate machines Issues: coordination, communication 1 https://www.packtpub.com/eu/application-development/learning- concurrent-programming-scala-second-edition 2 / 7

  3. Concurrency Fundamentals Programs are executed by OS in of of two primary ways ◮ Cooperative multitasking: processes yield the processor when they don’t need it, freeing up processor resources for other processes ◮ Preemptive multitasking: OS schedules processes/threads on processors. When a process/thread executes, how much is executed before getting suspended again is under OS control Modern OSes use preemptive multitasking. 3 / 7

  4. Processes and Threads ◮ A process is an instance of a computer program that is being executed. ◮ Threads are independent computations occurring in the same process. In a typical operating system, there are many more threads than processors. 4 / 7

  5. JVM Threads JVM starts a main thread for every application. Application may create and run (technically, schedule for execution) any number of additional threads. Example code: https://gitlab.com/cs2340/scala-concurrency 5 / 7

  6. Thread Communication ◮ Each thread has its own stack. ◮ A process has a single region of dynamic memory often called “heap” memory. All threads share the heap. Threads communicate by accessing shared memory. 6 / 7

  7. Monitors and Synchronization Race condition: one thread is updating shared memory, another is reading shared memory. Should happen in a specific order, but thread execution is governed by operating system. ◮ Solution: ensure only one thread can acess a particular piece of shared memory and that regions of code accessing that memory execute atomically (don’t get split up by operating system). 7 / 7

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend