해당 포스팅은 iOS Concurrency(동시성) 프로그래밍, 동기 비동기 처리 그리고 GCD/Operation - 디스패치큐와 오퍼레이션큐의 이해 강의를 수강하고 개인적으로 정리한 내용을 기록한 것 입니다.

Block Operation


  • block(closure)을 갖고 있는 오퍼레이션
  • 내부의 block 들을 다른 스레드에서 일 하도록 시킨다.
  • 기본 설정은 동기적(sync)
  • 기존의 Operation을 상속하여 만들어진 개념

특징


  • 디스패치 그룹과 유사하게 동작한다. (작업이 모두 종료되었을 때 알려준다.)
  • 기본 설정은 동기적이지만 다른 큐로 보내서 비동기적(async)으로 실행하는 것도 가능하다.
  • 객체 지향의 래퍼 { } 를 제공하여 여러 작업을 더 할 수 있도록 만든다.
  • 각 block은 디폴트 글로벌 큐에서 동작(concurrent 큐)
  • Operation을 많이 사용하는 앱에서 GCD와 같이 더 단순한 closure가 필요한 경우에 사용한다.

코드 예시


let bOperation = BlockOperation()
bOperation.addExecutionBlock {
	// 추가적으로 더 할 수 있는 작업
}

let bOperation2 = BlockOperation { // with wrapper
	result = 2 + 3
	print("print \(result)")
}