Programming/Swift

[iOS/Swift3.0] Concurrency 간단히 살펴보기

devssun 2018. 6. 25. 23:06
728x90
반응형

iOS Concurrency 간단 정리!!

Concurrency란? 동시성
-> 프로그램을 실행할 때 단 하나의 실행 순서를 갖도록 하는 제약을 없애고 각 부 프로그램이 다른 부프로그램과 병렬적으로 동시에 실행되는 것
-> 두 개 이상의 프로세스들이 다른 프로세스의 수행과 상호 독립적으로 동시에 수행될 수 있는 성질

-> Concurrency은 여러 스레드가 동시에 진행되는 것처럼 보이나 실은 작업을 번갈아가며 진행하는 것이다.


비동기(Asynchronous) 프로그래밍
프로그램의 주 실행 흐름을 멈추어서 기다리는 부분 없이 바로 다음 작업을 실행할 수 있게 하는 방식
코드의 실행 결과 처리를 별도의 공간에 맡겨둔 위 결과를 기다리지 않고 바로 다음 코드를 실행하는 병렬처리 방식
보통 네트워크 작업이 사용되는 곳에 비동기 프로그램이 사용된다.


동시성 프로그램의 종류

  • 병렬설(Parallelism) 프로그래밍
  • 물리적으로 정확히 동시에 진행되는 것, 멀티 코어에서 멀티 스레드를 동작시키는 방식으로 데이터 병렬성(Data Parallelism)과 작업 병렬성(Task Parallelism)으로 구분

    • 데이터 병렬성 : 전체 데이터를 나누어 서브 데이터들로 만든 뒤 서브 데이터를 병렬 처리하여 작업을 빠르게 수행
    • 작업 병렬성 : 서로 다른 작업을 병렬 처리

동시성, 병렬성 모두 비동기 동작을 구현할 수 있지만 동작 원리가 다르다.
동시성 : 통장을 만들러 온 N개의 대기열과 한 명 이상의 은행직원 -> 논리적, 싱글. 멀티코어
병렬성 : 통장을 만들러 온 N개의 대기결과 N명의 은행직원 -> 멀티코어



Reference
Naver 커넥트 재단 - edwith http://www.edwith.org/boostcourse-ios/lecture/16866/

반응형