비동기(Asynchronize) 처리 기법

프로그램이 기능이나 연산을 처리하는 방식

동기(Synchronize) 방식

주어진 명령을 차례대로 처리하되 하나의 업무가 완료될 때까지는 다음 업무로 넘어가지 않는 방식

동기 방식 처리

동기 방식 처리

비동기 방식 처리

비동기 방식 처리

비동기 방식으로 처리된 프로그래밍을 비동기 프로그래밍 이라고 합니다.

Swift 에서 제공하는 비동기 구현 기능 두가지

비동기 방식 코드 구현

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
	// 비동기 방식으로 섬네일 이미지를 읽어옴
	DispatchQueue.main.async(execute: {
	    NSLog("비동기 방식")
	    cell.thumbnail.image = self.getThumbnailImage(indexPath.row)
	})
}

썸네일 이미지를 가져와 셀에 할당하는 클로저 함수는 tableView(_:cellForRowAt:) 함수가 종료되어도 영향을 받지 않게 된다.

주의할 점은 비동기 방식으로 처리된 코드는 기존 실행 흐름과 별도로 처리되므로 실행 순서를 보장하지는 못한다는 사실이다.

즉, DispatchQueue.main.async() 메소드 내부에 있는 코드가 먼저 작성되었다고 해서 DispatchQueue.main.async() 다음에 작성된 코드보다 먼저 실행된다는 보장이 없다.