Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Concurrency From the Ground Up @gregheo 360iDev 2018 {
Slide 2
Slide 2 text
@gregheo 360iDev 2018 Concurrency
Slide 3
Slide 3 text
@gregheo 360iDev 2018 1. Programs that seem faster to the user 2. Programs that are easy to understand for the programmer WHY? WHY?
Slide 4
Slide 4 text
@gregheo 360iDev 2018 1. Structuring our programs better 2. Thinking in terms of Tasks 3. Protecting Resources
Slide 5
Slide 5 text
@gregheo 360iDev 2018 mainQueue.async { } troublesomeCode()
Slide 6
Slide 6 text
@gregheo 360iDev 2018 mainQueue.asyncAfter(.now + 0.1) { } troublesomeCode()
Slide 7
Slide 7 text
@gregheo 360iDev 2018 Concurrency & Structure
Slide 8
Slide 8 text
@gregheo 360iDev 2018 Concurrency Parallelism
Slide 9
Slide 9 text
@gregheo 360iDev 2018 “concurrency is the composition of independently executing processes”
Slide 10
Slide 10 text
@gregheo 360iDev 2018 “parallelism is the simultaneous execution of (possibly related) computations”
Slide 11
Slide 11 text
@gregheo 360iDev 2018 “parallelism is the simultaneous execution of computations”
Slide 12
Slide 12 text
@gregheo 360iDev 2018 “ Parallelism is about doing lots of things at once.” Concurrency is about dealing with lots of things at once.
Slide 13
Slide 13 text
@gregheo 360iDev 2018
Slide 14
Slide 14 text
@gregheo 360iDev 2018
Slide 15
Slide 15 text
@gregheo 360iDev 2018
Slide 16
Slide 16 text
@gregheo 360iDev 2018 C B A A() B() C()
Slide 17
Slide 17 text
@gregheo 360iDev 2018 A B C
Slide 18
Slide 18 text
@gregheo 360iDev 2018 A B C
Slide 19
Slide 19 text
@gregheo 360iDev 2018 A B C data
Slide 20
Slide 20 text
@gregheo 360iDev 2018 Order? Shared state? Mutable state?
Slide 21
Slide 21 text
@gregheo 360iDev 2018 Tasks & Threads
Slide 22
Slide 22 text
@gregheo 360iDev 2018 thread function thread thread
Slide 23
Slide 23 text
@gregheo 360iDev 2018 pthread GCD queue NSOperation dispatch groups
Slide 24
Slide 24 text
@gregheo 360iDev 2018 Locks & Resources
Slide 25
Slide 25 text
@gregheo 360iDev 2018 Lock • Locks as signals • Locks as mutual exclusion
Slide 26
Slide 26 text
@gregheo 360iDev 2018 pthread mutex semaphore os_unfair_lock NSLock GCD semaphore dispatch groups
Slide 27
Slide 27 text
@gregheo 360iDev 2018 1. Structuring our programs better 2. Thinking in terms of Tasks 3. Protecting Resources
Slide 28
Slide 28 text
@gregheo 360iDev 2018 1. Programs that seem faster to the user 2. Programs that are easy to understand for the programmer
Slide 29
Slide 29 text
@gregheo 360iDev 2018 pthread GCD queue Groups pthread mutex unfair lock NSLock GCD semaphore pthread semaphore NSThread }