iOS에서 GCD를 사용하여 백그라운드 스레드에서 시간이 많이 걸리는 작업을 수행하고 있습니다. API에는 두 개의 블록을 인수로 취하는 start 메소드가 있으며 둘 다 기본 대기열에서 호출됩니다. 첫 번째 작업은 작업이 시작될 때 호출되고 두 번째 작업은 작업이 완료 될 때 호출됩니다. 이것은 모두 작동합니다.GCD를 사용하여 비동기 백그라운드 작업을 어떻게 시퀀스 할 수 있습니까?
실제로 이러한 시간 소모적 인 작업을 여러 번 수행해야합니다. API를 사용하면 동시에 모든 것을 시작한 다음 각 블록이 완료 될 때까지 기다렸다가 블록을 통해 UI를 업데이트 할 수 있습니다. 동시에 실행됩니다.
그러나 실제로 내가하고 싶은 것은 시간이 많이 소요되는 작업 (아직 설명 된 API를 사용하여 시작하는 작업)을 순서대로 배열하여 동시에 모든 작업을 시작할 수 있고 첫 번째 작업을 실행하고 콜백 (call-backs)을하고, 두 번째 콜을 돌리고 콜백 (call-backs)을 준다.
GCD 및 블록을 사용하여이를 수행하는 가장 좋은 방법은 무엇입니까?
작업이 동기식 인 경우, 차례대로 실행되는 루프 만 있으면 모든 작업을 비동기 적으로 실행할 수 있습니다. 하지만 콜백이있어서 작동하지 않습니다. 나는 일련의 이벤트를 시작한 후에이 모든 것을 발생시키는 객체가 사라질 수 있기 때문에 체인을 연결하지 않는 것을 선호합니다.
명확히하려면 : 직렬 대기열을 추가하면 API의 다른 쪽이이를 해결합니다. 핵심 질문은 현재 API와 비동기 동시 동작에서 동일한 작업을 수행하는 방법입니다. –