Thumbnail
BEST
개발 · 프로그래밍 모바일 앱 개발

iOS Concurrency(동시성) 프로그래밍, 동기 비동기 처리 그리고 GCD/Operation - 디스패치큐와 오퍼레이션큐의 이해 대시보드

(5)
55개의 수강평 ∙  730명의 수강생

55,000원

지식공유자: 앨런(Allen)
총 32개 수업 (8시간 9분)
수강기한: 
무제한
수료증: 발급
난이도: 
입문
-
초급
-
중급이상
지식공유자 답변이 제공되는 강의입니다
폴더에 추가 공유
앨런(Allen) 프로필
강의 업데이트 관련 소식
앨런(Allen) 2021.08.26


[공지 - 강의 업데이트 관련 소식]


안녕하세요 앨런 입니다.

기존에 강의 업데이트를 공지 드렸었는데, 
사실, 신규 강의 출시로 인해 제가 너무 바쁜 날들을 보내고 있습니다. ㅠㅠ


그래서, 업데이트가 좀 많이 늦어질 것 같아,
안내를 드립니다.


좀 많이 늦어질 것 같아, 10월 ~ 11월 이내에 마무리 하게될 것 같다고 미리 안내를
해드려야 할 것 같고,
(물론 기존 강의 내용이 부실해서가 절대 아니고, 추가적으로 좀 더 아시면 좋을 내용과
스위프트 5.5버전에서 도입된 async/await 내용을 꼭 다뤄야할 것 같아
해당 내용들을 함께 넣어 업데이트 예정입니다.)


강의 업데이트가 많이 늦어져서 죄송하고,
그렇지만, 그만큼 또 추가적인 내용들은 충실하게 보충해서
돌아오도록 하겠습니다.

(내용 추가와 함께, 본 강의 가격도 약간? 높이려고 합니다!
기존 수강하시는 분들은 당연히 영향이 없으시고..
신규로 들으시는 분들은 약간 높아진 가격으로 수강하시게 될 꺼예요!)


무더운 여름.. 마무리할 시기인데,
건강 잘 챙기시길 바라고...!

또 곧 뵙도록 하겠습니다. :)


고맙습니다. !



- 앨런 드림 -

앨런(Allen) 프로필
Swift문법 마스터 스쿨 2기 모집중 (공지 수정)
앨런(Allen) 2021.07.17


[공지 - Swift문법 마스터 스쿨 2기 모집중]


안녕하세요 앨런 입니다.

공지드렸던,  Swift문법 마스터 클래스가 오픈되어 이미 1기의 경우
정원 모집이 마감될 정도로 많은 사랑을 받고 있습니다. :)

(사실, 이정도로 예상은 못했는데, 정말 많은 분들이 관심을 가져주셨네요!
물론 이미 2기의 경우에도 많은 분들이 수강예정입니다.)


현재까지는 비공개 강의로 오픈이 되어서
아래 링크가 있어야지만, 수업 확인이 가능하세요!

https://bit.ly/3jkqJHD


(아직까지 비공개 강의로 운영하는 이유는..
강의 초반부는 다 오픈이 되었지만, 여전히 제가 강의 뒷부분을 편집 중이기도 해서
이기도 하고, 기존의 제 강의를 좋아해주셨던 분들 위주로
큰 할인 혜택을 드리고 싶기도 하기 때문이기도 해서 입니다.
10월부터는 공개 강의로 전환 예정이고요!)


그래서, 스위프트 문법을 제대로 배워보고 싶으신 분들이 계시면

위의 강의 링크를 확인해보시는 것도 괜찮으실 것 같아요!




[문의]

-강의 관련 궁금한 문의는 언제든지 오픈톡 주셔도 되고,
  이메일 문의도 가능합니다.

- we.love.code.allen@gmail.com

- 업무용 카톡: allen.ios  (편하게 연락주시면, 제가 괜찮은 시간에 언제든 답해드립니다.)


[본 강의에 대한 문의 공개카톡방]

https://open.kakao.com/o/gGXZqqod


본 강의 관련 궁금하신 내용이 있으시면위의 공개카톡방으로 어떤 질문이시든지 해주시면 됩니다.


[본 강의 관련 노션 - 자주하는 질문 등]

https://bit.ly/2XZ4UVN



주변에, iOS신입 개발자로 이직을 준비하시는 분들이 있다면 많이 알려주시길 바랍니다. 감사합니다. :)


앨런(Allen) 프로필
GCD내용을 너무나 잘 정리하신, 블로그를 소개해드립니다. :)
앨런(Allen) 2021.05.21

안녕하세요! 앨런입니다. :)

오랜만에 새소식을 올리게 되었습니다.

제 강의를 들어주시고.. 제 강의 내용을 또 정성스럽게.. 본인만의 스타일로 재해석 하신 "sujinnaljin"님의 블로그를 소개해드리고자 오랜만에 새소식을 전해 드립니다. :)

글을 너무 재밌게 잘 쓰셔서.. 저도 모든 내용을 재미있게 읽어 보았답니다.ㅎㅎ

아래의 목차와 링크를 같이 전달 드려요! 그동안 질문도 많이 해주셨고, 또 추가적으로 여러가지 내용도 직접 또 공부하셔서.. 여러가지 내용을 정리해주셨더라고요! GCD내용을 복습할 겸 들어가서 한번 보시는 것도 좋으실 것 같아요!ㅎㅎ

(그리고 GCD이외의 다른 iOS관련 내용들도 정말 쉽고 재밌게 쓰신 것도 많아서, 참고해 보시면 좋을 듯 합니다.) 


["sujinnaljin"님 블로그 - GCD 관련 목차 및 링크]

[iOS] 차근차근 시작하는 GCD — 1: 이번엔 제발 이해하고 싶다 GCD..🥂

[iOS] 차근차근 시작하는 GCD — 2: GCD와 Operation에 대해 알아봅시다

[iOS] 차근차근 시작하는 GCD — 3: sync(동기) vs async (비동기) 를 알아봅시다

[iOS] 차근차근 시작하는 GCD — 4: Serial(직렬) vs Concurrent(동시)에 대해 알아봅시다

[iOS] 차근차근 시작하는 GCD — 5: GCD Dispatch Queue의 종류와 특성에 대해 알아봅시다

[iOS] DispatchQueue와 task의 QoS 가 다를때의 동작 방식: 차근차근 시작하는 GCD — 5 번외편 

[iOS] 차근차근 시작하는 GCD — 6: GCD 사용시 주의 사항에 대해 알아봅시다

[iOS] 차근차근 시작하는 GCD — 7: Dispatch Group의 개념에 대해 알아봅시다

[iOS] 차근차근 시작하는 GCD — 8: Dispatch Group에 비동기 작업이 포함된 task 를 보내는 방법을 알아봅시다

[iOS] 차근차근 시작하는 GCD — 9: DispatchWorkItem 에 대해 알아봅시다

[iOS] 차근차근 시작하는 GCD — 10: DispatchSemaphore 에 대해 알아봅시다

[iOS] 차근차근 시작하는 GCD — 11: 동시성과 관련된 문제들 (Concurrency Problems) 중 경쟁 상태(Race Condition)에 대해 알아봅시다

[iOS] 차근차근 시작하는 GCD — 12: 경쟁 상태(Race Condition) 해결 방법에 대해 알아봅시다 — Serial queue + sync

[iOS] 차근차근 시작하는 GCD — 13: 경쟁 상태(Race Condition) 해결 방법에 대해 알아봅시다 — Dispatch Barrier

[iOS] 차근차근 시작하는 GCD — 14: 교착 상태(Deadlock)와 해결 방법에 대해 알아봅시다

[iOS] 차근차근 시작하는 GCD — 15: 우선 순위의 뒤바뀜(Priority Inversion)과 해결 방법에 대해 알아봅시다





그리고, 7월 정도에 강의 내용에 약간의 업데이트가 예정되어 있습니다. :)
런루프 / 물리적 Thread(병렬) vs 소프트웨어 Thread(동시성) / Block - NonBlock / async, await 등에 내용과 관련하여.. 이미 자료는 정리를 해놓았는데.., 현재 스위프트 문법 관련 강의를 출시 예정으로 촬영 진행중인 강의가 있어.. 그 강의 촬영 및 업로드가 완료되면 본 강의도 업데이트를 할 예정입니다!

그러면 또 좋은 강의 내용으로 보답해드릴 것을 약속드리며.. 곧 다시 뵙도록 할께요 :)

- 앨런 드림 -

앨런(Allen) 프로필
왜 UI를 메인쓰레드에서 업데이트 할까?
앨런(Allen) 2020.07.04

안녕하세요. 오랜만에 새소식으로 인사드리네요.

다름이 아니오라,

왜 UI를 메인쓰레드에서 업데이트 해야할까? 라는 질문에 대한 좋은 글이 있어, 해석본을 만들게 되었고 공유해 드리려고 합니다.

혹시나 좋은 참고 자료가 되었으면 합니다.

(글의 원본 출처)

https://medium.com/@duwei199714/ios-why-the-ui-need-to-be-updated-on-main-thread-fd0fef070e7f

(해석본 pdf자료)

https://drive.google.com/file/d/1dFw6sJsxV-huK3BoHXgDq-7rXy9yBq9l/view?usp=sharing

간단하게 요약해 드리자면,

1) UIKit의 모든 속성을 Thread-safe하게 설계하면, 느려짐과 같은 성능저하가 발생할 수 있기 때문에 그렇게 설계할 수 없다. (Thread-safe하지 않게 설계한 것은 애플의 의도다.)

2) 메인 런루프(Runloop)가 뷰의 업데이트를 관리하는 View Drawing Cycle을 통해 뷰를 동시에 업데이트 하는 그런 설계를 통해 동작하고 있는데, (메인쓰레드가 아닌)백그라운드 쓰레드가 각자의 런루프로 그런 동작을 하게되었을때, 뷰가 제멋대로 동작할 수있다. (예를  들어, 기기를 회전 했을때, 동시에 뷰의 레이아웃이 재배치되는 그런 동작을 못하게 될 수도 있다.)

3) iOS가 그림의 그리는 렌더링 프로세스(코어애니메이션 -> 렌더서버 -> GPU -> 표시)가 있는데, 여러 쓰레드에서 각자의 뷰의 변경사항 GPU로 보내면 GPU는 각각의 정보를 다 해석해야하니 느려지거나, 비효율적이 될 수 있다.

4) Texture나 ComponentKit이라는 페이스북에서 개발한 비동기적 UI 프레임워크가 있긴 하지만, View Drawing Cycle가 유사한 방식으로 적절한 타이밍에 메인 쓰레드에서 동시에 업데이트 하도록 하고 있다.

이정도  내용입니다. 사실, iOS뿐만 아니라 윈도우나 다른 OS에서도 마찬가지로 이런 위의 유사한 여러가지 이유때문에 구조적으로 메인쓰레드에서만 UI업데이트를 할 수 있도록 하고 있는 것이 아닐까, 다시 생각해보게 하는 글이었습니다.

그냥 한번쯤 생각해 볼 수 있는 주제라.. 조금의 도움이 되시길 바랍니다 ^^

감사합니다.

다른 댓글 보기(1)
앨런(Allen) 프로필
안녕하세요. 강의에서 설명을 조금 추가한 부분이 있습니다.^^
앨런(Allen) 2020.04.26

안녕하세요. 앨런입니다.

우선 iOS동시성 프로그래밍 강의를 수강해주셔서, 감사하다는 말씀을드립니다. :)

최근에.. 질문부분에 두분께서.. 좋은 질문을 올려주셔서,

답변을  드렸고.. 약간의 주석에서  오류가 있는부분.. 그리고 설명을 조금  더 명확히 해드리고자,

해당 부분의 영상을 다시 찍고, 편집하여서 (기존 영상 파일을 대체하여)

업로드해 놓았고, 코드 및 PDF파일도 약간 수정해서  올려놓았기에.. 혹시나 코드나 PDF파일을 다시 다운로드 받으셔도

좋을 것 같아 새소식을 올리게 되었습니다.

(혹시 참고적으로 두분의 질문 및 제 답변을 한번 훑어보셔도 조금  공부에 도움이  되실 듯합니다.^^)

해당부분은 

GCD에서 3.디스패치큐(GCD) 사용시 주의해야할 사항에서

2) sync메서드에 대한 주의 사항. 즉, 현재의 큐(async)에서 현재의 큐(sync)로 보내면 안되는 이유에 관하여

조금 더 명확하게 다룬부분입니다.

(아래는 제가 강의교안 PDF에 추가한 페이지를  이미지로 캡처한 것입니다.)

PDF파일에는 위와 같은 내용을 추가해 놓았고, 참고적으로 보시면 될 것같습니다.

네..  혹시나 추가적으로 설명이 부족하다거나 이해가 잘 되지 않는 부분이 있으시면 언제든지 질문을 올려주시면, 성심성의껏 답변해드리도록  하겠습니다.

언제나 고맙습니다. :)

다른 댓글 보기(1)
앨런(Allen) 프로필
언제든지 편하게 질문을 올려주세요.
앨런(Allen) 2020.02.29

언제든지 편하게 질문을 올려주시면, 성심성의껏 답변을 드리도록 하겠습니다.

고맙습니다. ^^