Swift - GCD(1)
왜 동시성 프로그래밍이 필요할까?
동기 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 - 디스패치큐와 오퍼레이션큐의 이해
Author And Source
이 문제에 관하여(Swift - GCD(1)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dohyun8032/GCD1저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)