인프런 커뮤니티 질문&답변

주땡님의 프로필 이미지
주땡

작성한 질문수

성공적인 진짜 iOS 개발자 되기 [기초부터 실무까지]

45. higher order function (고차함수)

Main.sync 관련 질문입니다.

작성

·

435

0

학습하면서 어려움이 있으면 DispatchQueue.global().async {

            DispatchQueue.main.sync {

                Thread.sleep(forTimeInterval: 1)

                print("finish1")

            }

        }

위 코드의 굵은 코드들이 실행될때,

 

어떤 thread들이 실행되고 있는지 설명 부탁드리고 싶습니다.

 

이렇게 thread가 진행된다고 이해하면 맞나요?

답변 2

0

iOS Developer - 이정님의 프로필 이미지
iOS Developer - 이정
지식공유자

안녕하세요

 

우선 처음 질문에 올리신 이미지의 스레드 진행은 맞게 이해하셨습니다.

 

두번째 질문은 아래 개념을 기억하면 이해가 쉬울 것 같습니다.

  • main 스레드는 앱의 라이프 사이클에서 단 하나만 존재합니다.

  • sync는 다른 스레드를 멈추게 만듭니다.


그러므로 main에 sync를 걸었다면 그 안에 로직이 다 완료되는 시간인 1초동안 main thread가 멈추게 됩니다.

더 궁금하신 부분 있으면 추가 설명 드리겠습니다.

 

0

주땡님의 프로필 이미지
주땡
질문자

그리고 추가로, 저 코드 실행 시

main thread가 잠깐 멈출수도 있다고 말씀해주셨는데

그부분이 이해가 안갑니다.

멈추는 이유도 설명해주시면 감사하겠습니다ㅜ

주땡님의 프로필 이미지
주땡

작성한 질문수

질문하기