티스토리 뷰
[iOS 앱개발 기초] Concurrency Programming Guide (동시성 프로그래밍 가이드)
Dev_Pingu 2020. 7. 29. 22:59iOS 앱 개발을 할 때 OperationQueue를 사용하여 동시성 프로그래밍을 하기 위해서 필요한 내용을 공부할 수 있는 문서이다.
Apple Developer Document - Concurrency Programming Guide
Introduction
Concurrency(동시성)이란 여러 가지 일이 동시에 발생한다는 개념이다. 멀티 코어 CPU의 확산과 각 프로세서의 코어 수가 많이 증가한 현재 개발자는 이를 활용할 수 있는 새로운 방법이 필요하다. iOS와 같은 운영 체제는 여러 프로그램을 병렬로 실행할 수 있지만 대부분의 프로그램은 백그라운드에서 실행되며 프로세서 시간이 거의 필요 없는 작업을 수행한다. 사용자의 관심을 끌고 컴퓨터를 바쁘게 하는 것은 foreground라는 녀석들이다. 프로그램이 수행해야 할 작업은 많지만 사용 가능한 코어 중 일부만 사용하면 나머지 코어가 낭비되는 현상이 발생하게 된다.
과거에는 프로그램에 동시성을 도입하려면 하나 이상의 추가 스레드를 만들어야 했다. 하지만 이러한 스레드 코드를 작성하는 것은 쉽지가 않다. 스레드는 low-level 도구로 수동으로 관리해줘야 한다. 어떠한 프로그램에 대한 최적의 스레드 수는 하드웨어와 시스템에 따라 동적으로 변할 수 있기 때문에 이러한 스레드를 구현하는 것은 아주 어렵다. 또한 보통 스레드와 함께 사용하는 동기화 메커니즘은 복잡성과 위험성을 주기 때문에 잘 사용하는 것이 어렵다.
iOS는 스레드 스레드 기반 시스템 및 프로그램에서 동시성 작업에 비동기적인 접근 방식을 채택한다. 스레드를 바로 생성하는 것보다 프로그램은 어떠한 작업만 정의하고 시스템이 이를 수행하게 한다. 시스템이 스레드를 관리하게 하면 프로그램은 원시 스레드로는 불가능한 수준의 확장성을 얻을 수 있다. 또한 어려운 스레드 코딩을 하지 않아도 되기 때문에 개발자는 좀 더 간단하고 효율적인 프로그래밍을 할 수 있다.
이 문서는 프로그램에서 동시성을 구현하는 데 사용해야 하는 기술을 설명한다. 이는 iOS에서도 사용할 수 있다.
Organization of This Document
-
Concurrency and Application Design
비동기식 프로그램의 설계와 작업을 비동기적으로 수행하기 위한 기술을 소개 -
Operation Queues
Objective-C 객체를 사용하여 작업을 캡슐화하고 수행하는 방법을 보여준다 -
Dispatch Queues
C 기반 프로그램에서 task를 동시에 실행하는 방법을 보여준다 -
Dispatch Sources
시스템 이벤트를 비동기적으로 처리하는 방법을 보여준다 -
Migrating Away from Threads
기존 스레드 기반 코드를 마이그레이션 하여 기술을 사용하기 위한 팁과 정보를 제공
A Note About Terminology
동시성에 대해 알아보기 전에 용어를 정리하고 갈 필요가 있다. task, process, thread가 약간 다르게 사용될 수도 있다.
thread라는 용어는 코드에 대한 별도의 실행 경로를 나타내는 데 사용한다.
process라는 용어는 여러 스레드를 포함할 수 있는 실행 중인 실행 파일을 나타내는 데 사용한다.
task는 수행해야 하는 추상적인 작업을 나타낸다.
이 문서에서 사용되는 용어들에 대한 내용은 Glossary를 참고하자.
See Also
Threading Programming Guide도 함께 보면 스레드를 사용하는 방법이나 기술들을 알아볼 수 있다.
'iOS > iOS_Documents' 카테고리의 다른 글
[iOS 앱개발 기초] 동시성 프로그래밍에 사용되는 Operation Queues (2) | 2020.07.31 |
---|---|
[iOS 앱개발 기초] Concurrency and Application Design (동시성 및 앱 설계) (0) | 2020.07.30 |
[iOS 앱개발 프로그래밍] Foundation - Operation (0) | 2020.07.29 |
[iOS 앱개발 프로그래밍] Foundation - OperationQueue (0) | 2020.07.28 |
[iOS 앱개발 프로그래밍] UIKit - Table View - UITableView (0) | 2020.07.18 |
- Total
- Today
- Yesterday
- Swift
- pattern
- Publisher
- 문법
- 자료구조
- operator
- design
- 알고리즘
- Combine
- 앱개발
- System
- dfs
- 스위프트
- 동시성
- Xcode
- 프로그래밍
- 코딩테스트
- IOS
- operating
- BFS
- 아이폰
- mac
- document
- OSTEP
- Apple
- 테이블뷰
- DP
- OS
- 코테
- 백준
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |