GCD 사용 중 질문 드립니다!
안녕하세요, GCD 강의 챕터 수강 중에 질문 있어 글 작성드립니다.
예제의 asyncTiltShift함수에서 runQueue와 completionQueue를 구별하는 이유가 있을까요? completionQueue에서는 단순히 completionHandler 처리만 하기 때문에 따로 Queue에 task를 할당하는 이유가 있는지, 아래 코드처럼 바꿔줘도 상관없는지 궁금합니다!
func asyncTiltShift2(_ inputImage: UIImage?, runQueue: DispatchQueue, completion: @escaping (UIImage?, Error?) -> ()) {
runQueue.async {
var error: Error?
error = .none
let outputImage = tiltShift(image: inputImage)
completion(outputImage, error)
}
}설명 친절하고 상세하게 해주셔서 늘 감사드립니다 :)
답변 1
1
안녕하세요! 냥쥐님!
네네 당연히 말씀하신대로 만드신 방식대로의 코드식으로 바꾸셔도 상관없죠 ^^
런큐와 컴플리션큐를 구별해놓은 이유는 단순히 일반적으로 비동기 처리한 후에 일이 끝나면 UI작업을 메인쓰데드로 보내는 것과 같은 일을 처음부터 분리 시킬 수 있도록 하기 위해 코드를 수업 내용식으로 짠 것이고,
만약에 냥쥐님 처럼 짜신다면...
런큐가 만약에 2번쓰레드에서 일이 일어난다면, 컴플리션핸들러의 클로저도 동일하게 2번쓰레드에서
일어나겠구나만, 명심해서 사용하시면 된다고 생각합니다.
아니면, 만드신 ayncThiltShift함수를 실행하시고, 콜백내용을 정의하는 클로저 내부에서
메인쓰레드로 다시 보내는 내용을 넣으시면 되겠죠 ^^
수업을 수강해주셔서 감사합니다. :)
오퍼레이션 큐 질문
0
148
2
2) 오퍼레이션큐(OperationQueue) 강의 질문입니다
0
153
2
warning 뜸
0
169
1
수업자료 markup 에 대해 궁금합니다!
0
287
1
예제 프로젝트 빌드 실패
0
345
2
serial 큐 질문드립니다.
0
262
1
[7-3.DispatchBarrier] 예제 코드 질문
0
337
1
안녕하세요, GCD 관련 질문드립니다..
0
293
1
main.async 작동 질문(+ vs global(),async)
0
443
1
dismiss 되었을 때 종료질문
0
316
1
'동기'와 '동시성 프로그래밍'에 대해 질문드립니다.
0
511
2
Dependency Protocol 관련
1
377
1
시리얼 큐와 sync 관련
0
477
2
sync이지만 Queue에 넣으면 async로 동작한다는 말의 의미
0
660
1
lazy var 이슈로 생긴 여러 변수들은 어디에 있나요?
0
393
1
global큐에 sync로 작업을 보냈을 때는 터지지 않는 이유가 궁금합니다.
1
521
2
비동기 개념에서 무엇을 return하는 거죠??
0
399
1
안녕하세욤
1
350
1
Barrier 작업 관련 질문입니다.
1
352
1
디스패치 그룹
1
386
1
global async안에 global async를 만들게되면 어떻게 되나요??
2
393
2
동기적 함수를 비동기적 함수로 바꾸는 부분에서 질문 있습니다
1
296
2
비동기오퍼레이션 관련 질문
1
378
1
강의자료는 어디에 있나요?
1
328
1





