목록CS/동시성 (13)
기어가더라도 제대로
작업을 미리 정의해 놓고 사용하는, 큐에 제출하기 위한 객체 빈약한 을 내장 빈약한 을 내장 순서 기능도 사용할 수 있는데, `item1.notify(queue: mainQueue, excute: item2)` 이런 식으로 사용을 한다. 근데 굳이.. Class 화 하는 패널티를 감수하면서 순서를 지킬 필요가 있나 싶다.
그룹을 생성해주었는데, 해당 그룹에서 실행되는 작업들이 비동기적으로 실행되는 경우에 어떻게 해결이 되는지 확인해보자. 지금까지는 동기적인 작업을 설정해주었음 비동기 함수를 호출할 땐 **주의**해야함! 비동기 작업을 포함한 Task 의 경우, 실제 비동기 작업은 시작과 동시에 리턴되고, 실제 작업 종료시점이 아니라 임의의 시점에 작업이 완료되었다고 보고될 수 있음 즉, 제대로 일이 끝난 시점이 아니라는 뜻임. 시작점과 종료점을 명시적으로 선언 해줘야함. 입장과 퇴장의 짝이 맞으니 해결 실제 코드로 짜보는 것이 좋겠다.
목차 디스패치 그룹의 개념 디스패치 그룹의 사용 디스패치 그룹과 동기함수 디스패치 그룹과 비동기함수 (참고) Dispatch workItem (심화) Semaphore의 이해 디스패치 그룹의 개념 여러 스레드로 보낸 그룹으로 묶인 작업들이 대략적으로 언제 끝나는지 알고 싶을 때 사용 예) 이미지 다운로드가 다 완료된 시점에서 이미지를 활용하는 뷰 띄우기 작업을 큐에 보낼 때 해당 작업(Group1)의 꼬리표를 달아주고 모든 작업이 끝났을 때 `.notify(queue:)` 를 이용해서 완료시 할 작업을 설정 동기적인 기다림 모든 작업이 완료될 때까지 현재 대기열을 차단하는 동기적인 방법 `DispathGroup().wait` 만약 작업이 완료되길 기다리는 것을 동기적으로 ..