Swift - GCD(1)

1731 단어 swiftswift

왜 동시성 프로그래밍이 필요할까?

동기 vs 비동기
직렬 vs 병렬

동기 : 하나의 작업을 지시하고 완료될 때 까지 다음 작업을 진행하지 않음
비동기 : 어떤 것이 먼저 완료될지 모르지만 여러 작업을 지시함

동시성 프로그래밍이 필요한 이유!! : 여러 작업을 한개의 쓰레에 동작시키기 떄문에 스크롤 또는 많은 버벅임이 있을수 있다!!

  • 어떻게? 다른 쓰레드에 분산 시킬수 있을까?
  • 작업(Task)을 어떻게 분산 시킬수 있을까?

방법 : 작업(Task)를 "대기행렬(Queue)"에 보내기만 하면 된다 그럼 iOS에서 분산 처리 한다.
우리가 할일 : 작업(Task)를 Queue로 보내는 것이다!!

iOS에서는 크게 GCD,Operation의 두가지 대기행렬이 있다.

직접적으로 쓰레드를 관리하지 않고 "큐"(Queue) -(대기열/대기행렬) 이라는 개념을 이용해 작업을 분산처리
우리는 Queue만 만들고 그안에 작업(Task) 넣기만 하면 iOS가 쓰레드을 생성해서 넣는다.

  • GCD/Operation을 사용해 시스템에서 알아서 쓰래드를 관리함
  • 쓰레드 보다 더 높은 레벨/ 차원에서 일을 한다고 보면된다.
  • 쉽게 다른 쓰레드에서(오래 걸리는) 작업들이 "비동기 적으로 동작" 하도록 만들어줌(네트워크 작업)
    (어떤 API들은 내부적으로 다른 쓰레드에서 비동기적으로 실행되도록 설계되어 있음)

대기열로 보내는 방법(Code)

//큐에 보낸다    글로벌 큐에   비동기 적으로
DispatchQueue.global().async {
//Task(1) 작업의 한 단위
}


위 포스팅은 인프런 강의 "iOS Concurrency(동시성) 프로그래밍, 동기 비동기 처리 그리고 GCD/Operation - 디스패치큐와 오퍼레이션큐의 이해 " 를 시청하고 작성한 글입니다.

인프런 - iOS Concurrency(동시성) 프로그래밍, 동기 비동기 처리 그리고 GCD/Operation - 디스패치큐와 오퍼레이션큐의 이해

좋은 웹페이지 즐겨찾기