• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    미해결

3강 async 관련 질문입니다.

20.10.09 20:46 작성 조회수 118

1

안녕하세요! 강의 감사하게 잘 듣고있습니다. 

다름이 아니라 3강에서 async를 설명하실때 "작업을 보내고 즉시 리턴" 이라고 설명해주셨는데, "보낸다"의 시점이 작업을 queue 보낼때일까요 아니면 queue 에서 작업이 GCD에 의해 다른 스레드에 할당 될 때 일까요??

그림을 봐도 헷갈려서 질문 드립니다!

감사합니다 :) 

답변 5

·

답변을 작성해보세요.

1

네 감사합니다ㅎㅎ

질문해 주신, 비동기적으로 작업 완료를 
정확하게 처리하는 방법/코드는 섹션 3 -1) 반드시 메인큐에서 처리해야하는 작업 부분에서부터 자세하게 나오니 그 부분부터 감을 잘 잡으실 것이라고 생각되네요! 

수업을 수강해주셔서 감사드리고! 주욱 들으시다가.. 궁금하신 점이 있으시면 또 질문 주세요^^

고맙습니다. :)

1

오..!! 2번이.. 맞아요..!! 찰떡같이 이해하시고 설명해주셔서 감사합니다 ㅎㅎ~~~~

1

오 감사합니다!

한가지 더, sync로 다른 스레드에 보냈을때는 작업 완료까지 기다린다..!라고 설명해주셨는데, iOS에서는 작업 완료 시점을 어떻게 캐치하는지 갑자기 궁금해져서요!! 혹시 키워드 등을 알 수 있을까요? 이후 강의에 나오는 내용이라면 계속해서 정주행 하겠습니다 ㅎㅎ

0

음.. 일단은 제가 정확하게 어떤 내용을 궁금해 하시는 줄..
잘 캐치가 안되네요ㅠ
(아니면 질문에서 느껴지는게.. 다른 언어에서 무언가 유사한 걸 겪으셨던 것 같네요..)

이유가 무엇이냐면,

1)
sync(동기적인)는 기다리는 방법이 간단합니다. 코드에서 다음줄로 넘어가지 않고, 작업(함수) 등이 끝나길 기다리기만 하면 됩니다.
(계속 해당 코드줄에서 멈추어 있기)


2) 
제가 생각했을댄 오히려, async(비동기적인) 작업을 작업 완료 시점을 어떻게 캐치 하는지가 궁금해야 하는 것 같아서요. 왜냐면, 작업 완료를 기다리지 않고 시키키만 하고 신경을 안쓰고 있는데.. 그럼 실제 해당 작업이 언제 끝나지? 가 궁금해야하는 것 같습니다..ㅎㅎ 이부분은 뒤에서 당연히 나오는데.. 이부분을 Swift에서는 클로저를 통해서 알려줍니다 ^^ 보통 이런 클로저를 completionHandler(컴플리션 핸들러), completion(컴플리션) 라고 합니다.


원하시는 답변이 되실까요??

0

아네 ! sujinnaljin 님! 

안녕하세요! 큐로 보내고, 바로 리턴 한다고 생각하시면 됩니다! 일단 큐로 보내면.. OS가 알아서 처리할 것이기 때문에 큐로 작업을 보내자 마자 나(메인쓰레드)는 계속 할일을 한다고 생각하시면 됩니다 ^^

감사합니다. :)