Concurrent Programming in iOS
-
Upload
sam-mejlumyan -
Category
Technology
-
view
41 -
download
0
Transcript of Concurrent Programming in iOS
![Page 1: Concurrent Programming in iOS](https://reader031.fdocuments.in/reader031/viewer/2022021921/58eca9231a28abac718b469f/html5/thumbnails/1.jpg)
Concurrent Programming
Sam Mejlumyan
![Page 2: Concurrent Programming in iOS](https://reader031.fdocuments.in/reader031/viewer/2022021921/58eca9231a28abac718b469f/html5/thumbnails/2.jpg)
What really happened on Mars?July 4th, 1997
![Page 3: Concurrent Programming in iOS](https://reader031.fdocuments.in/reader031/viewer/2022021921/58eca9231a28abac718b469f/html5/thumbnails/3.jpg)
What about we’ll talk
• What is Concurrent Programming
• Concurrency APIs on iOS
• Challenges of Concurrent Programming
![Page 4: Concurrent Programming in iOS](https://reader031.fdocuments.in/reader031/viewer/2022021921/58eca9231a28abac718b469f/html5/thumbnails/4.jpg)
Concurrent vs. Parallel
![Page 5: Concurrent Programming in iOS](https://reader031.fdocuments.in/reader031/viewer/2022021921/58eca9231a28abac718b469f/html5/thumbnails/5.jpg)
Concurrency APIs on iOS
• Threads
• GCD
• Operation Queues
• Run Loops
![Page 6: Concurrent Programming in iOS](https://reader031.fdocuments.in/reader031/viewer/2022021921/58eca9231a28abac718b469f/html5/thumbnails/6.jpg)
Threads
• POSIX thread API
• The basic for GCD and Operation queues
• Objective-C wrapper – NSThread
![Page 7: Concurrent Programming in iOS](https://reader031.fdocuments.in/reader031/viewer/2022021921/58eca9231a28abac718b469f/html5/thumbnails/7.jpg)
Pthreads• Thread management - creating, joining threads
• Mutexes
• Condition variables
• Synchronization between threads using read/write locks and barriers
• Use when create application for different platform
![Page 8: Concurrent Programming in iOS](https://reader031.fdocuments.in/reader031/viewer/2022021921/58eca9231a28abac718b469f/html5/thumbnails/8.jpg)
Objective-C wrapper around pthreads
NSThread
![Page 9: Concurrent Programming in iOS](https://reader031.fdocuments.in/reader031/viewer/2022021921/58eca9231a28abac718b469f/html5/thumbnails/9.jpg)
GCD
• Low-Level API
• You don’t interact with threads directly
• Five different queues
![Page 10: Concurrent Programming in iOS](https://reader031.fdocuments.in/reader031/viewer/2022021921/58eca9231a28abac718b469f/html5/thumbnails/10.jpg)
GCD
![Page 11: Concurrent Programming in iOS](https://reader031.fdocuments.in/reader031/viewer/2022021921/58eca9231a28abac718b469f/html5/thumbnails/11.jpg)
GCD
![Page 12: Concurrent Programming in iOS](https://reader031.fdocuments.in/reader031/viewer/2022021921/58eca9231a28abac718b469f/html5/thumbnails/12.jpg)
Quality of Service• userInteractive
• userInitiated
• default
• utility
• background
• unspecified ••
![Page 13: Concurrent Programming in iOS](https://reader031.fdocuments.in/reader031/viewer/2022021921/58eca9231a28abac718b469f/html5/thumbnails/13.jpg)
Operation Queue features
• maxConcurrentOperationCount property
• sorting of operations
• specify dependencies between operations
• cancelation mechanism
• KVO
• state of operation
![Page 14: Concurrent Programming in iOS](https://reader031.fdocuments.in/reader031/viewer/2022021921/58eca9231a28abac718b469f/html5/thumbnails/14.jpg)
Sharing of ResourcesRace condition
![Page 15: Concurrent Programming in iOS](https://reader031.fdocuments.in/reader031/viewer/2022021921/58eca9231a28abac718b469f/html5/thumbnails/15.jpg)
Mutual Exclusion
![Page 16: Concurrent Programming in iOS](https://reader031.fdocuments.in/reader031/viewer/2022021921/58eca9231a28abac718b469f/html5/thumbnails/16.jpg)
Dead Locks
![Page 17: Concurrent Programming in iOS](https://reader031.fdocuments.in/reader031/viewer/2022021921/58eca9231a28abac718b469f/html5/thumbnails/17.jpg)
Priority Inversion
![Page 18: Concurrent Programming in iOS](https://reader031.fdocuments.in/reader031/viewer/2022021921/58eca9231a28abac718b469f/html5/thumbnails/18.jpg)
Conclusion
• pull out the data on the main thread
• use an operation queue to do the actual work in the background
• finally get back onto the main queue