-
카테고리
-
세부 분야
모바일 앱 개발
-
해결 여부
미해결
Serial Queue를 사용하면 경쟁상황이 발생할 수 없지 않는지요?
21.01.27 02:55 작성 조회수 135
1
9:30 쯔음에 보여주시는 예시에서요
Serial Queue를 사용하면 경쟁상황이 발생할 수 없지 않는지요?
Serial Queue는 한개의 쓰레드로만 task를 보낸다고 이해해서요...
Concurrency Queue였다면 여러 쓰레드로 보내지니 경쟁상황이 될것같구요
iOS Concurrency(동시성) 프로그래밍, 동기 비동기 처리 그리고 GCD/Operation - 디스패치큐와 오퍼레이션큐의 이해
1) Race Condition (경쟁 상황)
강의실 바로가기
답변을 작성해보세요.
0
앨런(Allen)
지식공유자2021.01.27
네 안녕하세요! "csh8130"님 !
제가 해당 내용을 보니, 제가 설명하는 것이 조금 헷갈리셨을 수도 있을 것 같네요.
제가 해당예시에서 말씀드린 취지는..
changeValue( ) 함수의 실행과, changeValue1( ) 함수, changeValue2( ) 함수의 실행이
동시에 일어난다는 차원에서 말씀드린 것은 아니고
value변수에 접근해서 프린트(print)하는 작업(메인쓰레드)과
기타 changeValue( ) 함수들(시리얼큐)의 실행이 동시에
일어날 수 있다는 취지에서 말씀드린 것입니다. ^^;
즉, 코드는 순서대로 일어날 것 처럼 보여서 변수의 값이,
777이 아닌 555나, 888, 또는 0으로 바뀌어있길 바랄수 있으나
실제로는 메인쓰레드에서 print( )할때는 값이 바뀌지 않고
여전히 그대로 777 값으로 남아있다는 차원에서,
내가 changeValue( ) 작업을 시리얼큐로 보냈지만,
여전히 print( )는 메인쓰레드에서 일어나고 있고, (둘다 value변수에 접근하고 있으니..)
그런 차원에서.. 큰 의미의 "경쟁 상황"일 수 있다라고 말씀드린 것입니다.. ^^
이해가 되셨길 바랍니다. :)
또 궁금한 것 있으시면 언제든지 질문 주세요!
감사합니다.
답변 1