티스토리 뷰

반응형

iOS 앱 개발을 할 때 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도 함께 보면 스레드를 사용하는 방법이나 기술들을 알아볼 수 있다.

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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 31
글 보관함