1. Task

  • 비동기적인 일처리를 할 수 있는 하나의 일(work)의 단위.
  • 작업의 생성한다음 바로 비동기적인 일처리를 시작한다.
  • Operation 파라미터에 해당하는 클로저를 전달하면서, 작업Task을 생성 및 클로저로 전달된 (비동기적인) 작업을 즉시 실행한다.

    // 인스턴스 생성
    Task {
        // 비동기적인 일(인스턴스를 생성하자마자 비동기 작업 실행한다)
    }
    

작업의 취소

  • 변수에 담아서 관리가 가능해진다

    task.cancel()
    

결과값 접근

  • 작업은 Success 또는 Failure를 리턴

    await task.value  // 작업의 성공의 결과값에 접근
    await task.result // 작업의 결과를 Result 타입으로 변환
    

작업은 각자 비동기적인 작업 처리를 진행하므로, 각 작업은 병렬적으로 일처리를 진행한다

작업은 현재 실행중인 컨텍스트의 메타데이터를 그대로 상속해서 사용한다

1

2. 작업의 특징

  • Swift Concurrency에서 작업은 비동기적인 일처리를 위한 기본 단위이다.
  • 작업은 동시성 코드를 실행하고 그 상태와 관련 데이터를 관리한다.
  • 작업의 내부 코드는 순차적으로 동작한다. (멈췄다가 실행될 수도 있다)
  • 컴파일 시점에 thread-safe하지 않은 코드 작성을 불가능하도록 하여 잠재적 불안정 가능성을 제거한다.
  • 기존의 CGD는 대기열 방식인데 큐 자체가 우선 순위를 보유하기 때문에 반드시 우선순위로 실행되지 않을 수 있다.
  • 기존의 CGD는 비동기 작업에 우선 순위를 지정할 수 있었지만 큐 내에서는 FIFO 방식이어서 기본적으로 대기열에 클로저가 등록된 순서대로 처리된다.
  • Task는 새로운 비동기 방식으로, 우선 순위로 지정한 일을 먼저 끝낼 수 있다.

Task 에서 새로운 방식 도입

  • Task 내부에서 실행되는 함수는 잠시 중단되었다가 다시 재개될 수 있다.(새로운 방식)
  • async/awit 도입한다는 것은 어떤 함수가 실행되다가 중단되었다가 다시 실행될 수 있는 개념을 만들어 주는 것이다.
  • 반드시 Task 안에서 실행을 시켰을 때만 중단이 가능하다.

Leave a comment