inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

1) Race Condition (경쟁 상황)

Serial Queue를 사용하면 경쟁상황이 발생할 수 없지 않는지요?

225

csh8130

작성한 질문수 1

1

9:30 쯔음에 보여주시는 예시에서요

Serial Queue를 사용하면 경쟁상황이 발생할 수 없지 않는지요?

Serial Queue는 한개의 쓰레드로만 task를 보낸다고 이해해서요...

Concurrency Queue였다면 여러 쓰레드로 보내지니 경쟁상황이 될것같구요

swift ios

답변 1

0

앨런(Allen)

네 안녕하세요! "csh8130"님 !

제가 해당 내용을 보니, 제가 설명하는 것이 조금 헷갈리셨을 수도 있을 것 같네요.
제가 해당예시에서 말씀드린 취지는..

changeValue( ) 함수의 실행과, changeValue1( ) 함수, changeValue2( ) 함수의 실행이
동시에 일어난다는 차원에서 말씀드린 것은 아니고

value변수에 접근해서 프린트(print)하는 작업(메인쓰레드)과
기타 changeValue( ) 함수들(시리얼큐)의 실행이 동시에
일어날 수 있다는 취지에서 말씀드린 것입니다. ^^;

즉, 코드는 순서대로 일어날 것 처럼 보여서 변수의 값이,
777이 아닌 555나, 888, 또는 0으로 바뀌어있길 바랄수 있으나

실제로는 메인쓰레드에서 print( )할때는  값이 바뀌지 않고
여전히 그대로 777 값으로 남아있다는 차원에서,

내가 changeValue( ) 작업을 시리얼큐로 보냈지만,
여전히 print( )는 메인쓰레드에서 일어나고 있고, (둘다 value변수에 접근하고 있으니..)

그런 차원에서.. 큰 의미의 "경쟁 상황"일 수 있다라고 말씀드린 것입니다.. ^^

이해가 되셨길 바랍니다. :)

또 궁금한 것 있으시면 언제든지 질문 주세요!

감사합니다.

오퍼레이션 큐 질문

0

128

2

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

0

145

2

warning 뜸

0

151

1

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

0

273

1

예제 프로젝트 빌드 실패

0

331

2

serial 큐 질문드립니다.

0

251

1

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

0

325

1

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

0

284

1

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

0

432

1

dismiss 되었을 때 종료질문

0

303

1

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

0

491

2

Dependency Protocol 관련

1

364

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

379

2

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

1

285

2

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

1

369

1

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

1

321

1