2) 오퍼레이션큐(OperationQueue) 강의 질문입니다
145
작성한 질문수 1
2) 오퍼레이션큐(OperationQueue) 강의 15분37초 쯤 보면 필터 작업이 다 끝난다음에 append큐를 통해서 배열에 전달을 한다고 말씀하셨어요. 근데 여기 필터하려는 이미지가 5장이잖아요, 5장 모두 필터링 다 끝나고 나면 배열에 들어가는건가요 아니면 ,filterQueue는 기본적으로 동시적으로 동작하면서 각 필터 작업이 끝나는 대로 배열에 넣는건가요? filterQueue.waitUntilAllOperationsAreFinished() 코드 보면 동기(sync)적으로 동작하게 하니까 전자가 맞는거 같아보여요
답변 2
1
네 동준 님! 안녕하세요!
여기서는 모두 필터링 다 끝나고 나면 배열에 들어가는 건 아니고,
각 필터작업이 끝나는 대로 배열에 넣는 것이예요!
completionBlock 에 할당해주는 클로저의 경우, 각 필터작업(오퍼레이션)이 끝난 후에.. 무엇을 할 것인지, 정해주는 부분입니다.
그리고, 해당 코드 전체에 반복문으로 감싸진 것을 보실 수가 있는데..
이는 TiltShift 오퍼레이션 작업이 5개가 생성이 되고, 물론 결론적으로 생성된 5개의 오퍼레이션을 하나의 쓰레드만 가진 filterQueue에 순차적으로 넣어주고 있는 것을 보실 수가 있는데,
어쨌든.. completionBlock의 클로저는 filterQueue에 설정해주는 것이 아닌, 각 filterOp(오퍼레이션)에 설정해주고 있는 것을 보실 수 있어요.
따라서, 당연히 각 오퍼레이션 작업이 끝날때 수행하는 일이겠죠.
혹시, 다른 궁금증이 생기시면 또 질문주세요!
고맙습니다. :)
0
안녕하세요, 인프런 AI 인턴입니다. 이동준님.
오퍼레이션큐(OperationQueue)에서의 동작 방식에 대해 질문해주셨네요. 질문하신 내용에 대한 답변과 함께 관련 정보를 드리겠습니다.
filterQueue는 기본적으로 동시적으로 동작하는 큐입니다. 즉, 여러 작업을 동시에 실행할 수 있습니다. 하지만 filterQueue.waitUntilAllOperationsAreFinished()를 사용하면 모든 작업이 완료될 때까지 현재 스레드를 일시 정지시키므로, 이 메서드를 호출했을 때는 모든 필터링 작업이 끝난 이후에 다음 단계가 진행됩니다.
즉, 필터링된 이미지를 배열에 넣는 작업은 각 필터 작업이 끝난 순서로 큐에 도착하게 됩니다. 하지만, waitUntilAllOperationsAreFinished()가 호출된 시점에서는 모든 필터링 작업이 이미 완료된 상태이기 때문에, 결과 배열에는 모든 이미지가 필터링되어 이미 포함되어 있습니다.
추가적으로 오퍼레이션 큐와 관련하여 동시성 처리에 대한 더 깊이 있는 설명을 원하시면 다음 질문들을 참고하시면 도움이 될 것입니다:
이해가 되셨기를 바라며, 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
오퍼레이션 큐 질문
0
128
2
warning 뜸
0
151
1
수업자료 markup 에 대해 궁금합니다!
0
273
1
예제 프로젝트 빌드 실패
0
331
2
serial 큐 질문드립니다.
0
251
1
[7-3.DispatchBarrier] 예제 코드 질문
0
325
1
안녕하세요, GCD 관련 질문드립니다..
0
284
1
main.async 작동 질문(+ vs global(),async)
0
432
1
dismiss 되었을 때 종료질문
0
303
1
'동기'와 '동시성 프로그래밍'에 대해 질문드립니다.
0
491
2
Dependency Protocol 관련
1
364
1
시리얼 큐와 sync 관련
0
464
2
sync이지만 Queue에 넣으면 async로 동작한다는 말의 의미
0
645
1
lazy var 이슈로 생긴 여러 변수들은 어디에 있나요?
0
385
1
global큐에 sync로 작업을 보냈을 때는 터지지 않는 이유가 궁금합니다.
1
501
2
비동기 개념에서 무엇을 return하는 거죠??
0
391
1
안녕하세욤
1
339
1
Barrier 작업 관련 질문입니다.
1
340
1
디스패치 그룹
1
381
1
global async안에 global async를 만들게되면 어떻게 되나요??
2
379
2
동기적 함수를 비동기적 함수로 바꾸는 부분에서 질문 있습니다
1
285
2
비동기오퍼레이션 관련 질문
1
369
1
강의자료는 어디에 있나요?
1
321
1
AsyncOperation을 async await Task로 대체 가능한 지에 대한 질문
1
410
1





