inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

교착상태 발생 가능성

해결된 질문

250

냥쥐

작성한 질문수 3

1

안녕하세요! 강의 수강 중 질문 있어 글을 남깁니다.

'교착상태의 다양한 발생 가능성' 부분을 보고 있습니다.

그 중 첫 번째가 '동기 작업이 현재의 쓰레드를 필요로 하는 경우'입니다. 이 부분은 3-2 강의를 참고해서 이해를 했는데요. 아래처럼 비동기로 작업을 보냈는데, 자신을 block시킨 global queue에 할당되어 교착된 상태입니다.

DispatchQueue.global().async {
	DispatchQueue.global().sync {
			...
	}
}

두 번째가 '앞선 작업이 현재 쓰레드를 필요로 하는 경우'인데요, 생각해보니 위의 케이스를 제외하고는 마땅한 경우가 떠오르지 않아서요! 혹시 첫 번째 상황과 같은 것을 의미하는지, 제가 설명한 부분이 맞는 말인지 궁금합니다.

 

감사합니다! :)

 

swift ios

답변 1

1

앨런(Allen)

아 네 냥쥐님!

일단 첫번째 내용 정확하게 이해 하셨어요. 이미지를 붙이신대로, 2번쓰레드에서 다시 작업을 2번쓰레드로 기다리겠다라고 보내니.. 교착상태가 일어나는 것이죠.

두번째는, '앞선 작업이 현재의 쓰레드를 필요로 하는 경우'인데.. 사실 너무 이론적인 내용이라.. 그냥 그런게 있나보다 하고 넘어가시면 될 것 같긴해요..! 저도 코드로 상황을 만들기는 조금 힘들 것 같고, 그냥 단순하게 예를 들어 어떤 함수 내부에서 2번쓰레드를 사용하고 있었는데.. 그 함수 내부에서 잠깐 3번쓰레드를 사용했다가 뭔가 다시 2번쓰레드를 쓰는 일이 일어나서.. (원래 있던 작업이 다시 현재 쓰레드를 사용하는 일이 발생해서) 이러지도 저러지도 못하고 실행이 안되는 그런 상황도 생길 수(?)는 있다... 이 정도로 생각하시고 넘어가시면 될 것 같아요..!ㅠㅠ
(사실 교착 상태라는 것이... 제가 처음에 이미지로 설명드린 것처럼 여러 쓰레드에서 2개의 자원을 서로 사용하려고 해서, 갑자기 아무일도 진행이 안되는.. 그런 모든 상황을 포함하는 것이기 때문에.. 꼭 몇가지 케이스가 정확하게 있다고 단정짓기는 힘들긴 합니다..ㅠ 여러 상황에서, 무언가 일이 겹치거나.. 쓰레드가 겹치거나, 메모리를 사용하려는 것이 겹치거나.. 이런 모든 상황적인 것을 다 포함하는 개념이라.. 그냥 그런 이론적인 것이 있나보구나 하고 가볍게 넘기셔도 될 것 같아요. ^^)

감사합니다..!

좋은 밤 되세요 :)

오퍼레이션 큐 질문

0

128

2

2) 오퍼레이션큐(OperationQueue) 강의 질문입니다

0

145

2

warning 뜸

0

152

1

수업자료 markup 에 대해 궁금합니다!

0

273

1

예제 프로젝트 빌드 실패

0

331

2

serial 큐 질문드립니다.

0

252

1

[7-3.DispatchBarrier] 예제 코드 질문

0

325

1

안녕하세요, GCD 관련 질문드립니다..

0

284

1

main.async 작동 질문(+ vs global(),async)

0

432

1

dismiss 되었을 때 종료질문

0

304

1

'동기'와 '동시성 프로그래밍'에 대해 질문드립니다.

0

492

2

Dependency Protocol 관련

1

365

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

381

2

동기적 함수를 비동기적 함수로 바꾸는 부분에서 질문 있습니다

1

285

2

비동기오퍼레이션 관련 질문

1

371

1

강의자료는 어디에 있나요?

1

322

1