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

sujinnaljin님의 프로필 이미지
sujinnaljin

작성한 질문수

앨런 iOS Concurrency(동시성) - 디스패치큐와 오퍼레이션큐의 이해

1) 디스패치 그룹의 개념

Dispatch Group 개념 중 "wait 을 통한 동기적인 기다림"에 대한 질문입니다.

해결된 질문

작성

·

227

2

안녕하세요 앨런님! 여전히 강의 감사히 잘 듣고 있습니다 :)

그 중 Dispatch Group  개념 중 "wait 을 통한 동기적인 기다림"에 대한 두가지 궁금한점이 있어서 글을 남깁니다!

1. wait()를 통해 동기적으로 group이 끝나는것을 기다리는 방법에 “현재 대기열을 차단하는 방법"이라고 써있고, 설명도 스레드와 혼용되어 있지만, 다른 그림들이나 문맥으로 보아 정확히는 wait 을 실행하게 된 “현재 스레드”를 의미하는거겠죠?

2. “그룹 작업이 다 끝나야만 다음 작업을 할 수 있는 상황인데, 어떤 이유로 그룹의 완료 알림에 비동기적으로 응답할 수 없는 경우” 에 wait 을 쓴다고 설명을 주셨는데,  해당 경우가 잘 떠오르지 않습니다. 혹시 예시를 들어주실 만한 상황이 있을까요?

감사합니다 :) 

답변 3

1

sujinnaljin님의 프로필 이미지
sujinnaljin
질문자

오호.. 디스패치 그룹의 wait()을 쓰는 경우는 꽤 복잡한 경우군요 🤔 ! 우선은 개념만 좀 더 정확히 다지고, "시리얼큐와 Sync, 객체설계시 주의할점"에서 한번 더 유의해서 봐야겠네요 👀

오늘도 자세하고 알기 쉽게 설명주셔서 감사합니다!

앨런님도 새해복 많이 받으셔요~

감사합니다. :) 

1

앨런(Allen)님의 프로필 이미지
앨런(Allen)
지식공유자

네 안녕하세요! 수진님! 오랜만이시네요 :)

새해 복 많이 받으세요!!!

그럼 오늘도 열심히 답변드려보도록 하겠습니다!ㅎㅎ

1. 네 맞습니다. 현재 스레드를 의미합니다. (wait을 실행한다는 논리상, 대기열이던, 스레드이던 큰 차이 없을 것 같아서 대기열이라고 하였지만, 정확한 의미로 생각하신 다면 스레드가 맞습니다.^^)

2. 일반적으로 사용하는 경우는 잘 없는 것 같습니다. 일반적인 네트워크 통신을 사용하거나, 그런 경우에는 사용하는 경우가 거의 없었던 것 같고... 굳이 이런 예를 찾아야 한다면, 아마도 뒤쪽 강의에서 7-2 /3 부분에 내용(시리얼큐와 Sync, 객체설계시 주의할점) 에서 보시면, 객체를 설계하실때, 다른 객체에서 값을 얻어와야하는 그런 경우가 있습니다.

그러니까, 예를 들어 객체 1의 속성에서 값을 얻으려고 하는데, 그 값 같은 경우 객체2의 어떤 속성에 의존을 하고 있고... (객체2의 그 속성은 여러 쓰레드에서 비동기적으로 동작..) 그래서 객체1의 속성은 객체2들의 (비동기적)동작이 다 끝나길 기다려야만 하는 그런 상황이 발생할 수도 있을 것 같은데.., 예를 찾아야 한다면 굳이 이렇게 생각해야할 것 같습니다 ^^;

(저는 강의 제작을 위해서, 여러가지 메서드를 말씀드린 것 뿐이지만, 실제로 사용하는 경우는 저도 아직은 못본 것 같네요;;)

이정도로 좋은 답변이 되셨으면 하네요!ㅎㅎ

감사합니다.

0

앨런(Allen)님의 프로필 이미지
앨런(Allen)
지식공유자

넵넵 ! 뒤쪽에 가셨을때, 한번 유의해서 생각해보시면 될 듯합니다. 👍🏻

감사합니다. :)

sujinnaljin님의 프로필 이미지
sujinnaljin

작성한 질문수

질문하기