Alan iOS Concurrency - Understanding Dispatch Queues and Operation Queues
Concurrency Programming - Covers all the concepts of synchronization and asynchrony required in iOS programming, as well as GCD and Operation that extend it.
Understanding Optimization on iOS (Performance/Responsiveness)
Understanding the basic concepts of asynchronous/synchronous processing
Understanding iOS Dispatch Queue (GCD)
Understanding Dispatch Groups/Asynchronous Dispatch Groups
Understanding iOS OperationQueue
Example of a real project that applied GCD/Operation
A to Z on GCD/Operation
Understanding Thread Safety
Understanding Thread-Safe Object Design
Easy (picture-based) intuitive understanding of all this
🙋🏻♂️ Self-diagnosis chart
After class, you will have a clear understanding and understanding of the concepts below.
I have a clear understanding of the concept of dispatch queues . (Yes/No)
I understand the types of dispatch queues and quality of service (QoS). (Yes/No)
In most cases, I know why I shouldn't use the Sync method, and I understand the difference between when I absolutely must use the Sync method . (Yes/No)
I know about the concept of dispatch groups . (Yes/No)
I know what to watch out for when handling asynchronous functions in a dispatch group . (Yes/No)
I understand the concept of dispatch work items and why they are used. (Yes/No)
I know the concept ofdispatch semaphores and how to use them. (Yes/No)
When designing objects, you should clearly understand the considerations for the possibility of multiple threads accessing them, and design the right objects . (Yes/No)
When creating a project of the table view/collection view type that downloads images, I am clear about the points to be careful about in handling the asynchrony concept . (Yes/No)
I have a clear understanding of potential issues that can arise when using dispatch queues (when multiple threads access data), especially race conditions , and I know how to use TSan (Thread Sanitizer Tool) . (Yes/No)
I have a clear understanding of how to write thread-safe code . (Yes/No)
I know the concept of extended operations in dispatch queues and the differences between them. (Yes/No)
You can use it to distinguish when to use an operation queue instead of a dispatch queue. (Yes/No)
I understand the code for asynchronous operations (AsyncOperation) , which can handle asynchronous functions. (Yes/No)
You can freely use the main functions of the operation (setting the order of tasks, canceling them) . (Yes/No)
📝 Lecture Table of Contents
(It is largely divided into GCD and Operation parts. Even if you have a good understanding of GCD, you may be unfamiliar with Operation (task class) , a concept developed from GCD. It is structured so that you can understand everything in one lecture, more clearly and easily than any blog or lecture.)
🖼️ Example of picture caption style
(Examples of various illustration and diagram explanation methods used in class.)
🌈 Materials provided in the lecture
Various materials are provided below.
GCD Summary PDF - Chapter 287
Operation-related Summary PDF - Chapter 89
Code for GCD related explanation (playground file) - 19 pages (excluding source files)
🙋🏻♂️ Is the lecture content very different from the <Lecture Production Reference Materials>?
There really is a lot of difference.
If I had simply attempted to create a translation-level lecture based solely on the reference materials above, I would not have planned this lecture. I have chosen the best possible method of explanation, personally creating PPTs with efficient and effective explanations, direct illustrations, and diagrams on these topics to help youintuitively understand how threads actually work . As I mentioned above , I have reviewed the reference materials more than ten times, and while covering all the content, this lecture aims to make the explanations much easier and the various illustrations make for an intuitive understanding.
And since the content of these figures is something I personally organized over a period of more than two full-time months, I don't think you'll find an explanation like this or this detailed anywhere else (including overseas materials). For example, if there was a single line in the reference material (raywenderlich's video lecture) that said, "This problem can also occur with lazy var," I would have personally identified all the issues related to lazy var, organized them, and presented solutions while helping with intuitive understanding with figures.
Understanding the big picture makes writing code much easier. I've tried to maintain a balance between understanding through pictures and applying code as much as possible, which makes this book stand out from other reference materials. Compared to reference materials, this book offers much more detail, intuitiveness, and richer material, along with consistent, easy-to-understand explanations.
🐠 About the code provided
To help you understand the topic, code files are provided and it is also covered in the class . Most of the code provided is adopted from the GCD video lectures by raywenderlich within the scope permitted by the license ( the adopted parts are specified ). For the parts where the license does not permit (the code provided in the raywenderlich book), I wrote the code myself, and in the main framework , I tried to ensure the reliability of the code provided by writing similarly.
Additionally, to help you understand the code we provide, we've rearranged the code order and added more code for more detailed explanations, providing a variety of examples to help you understand the content of this course.
🤔 About class pricing
You might be surprised by the high price for a single topic, but I assure you, the extensive content is worth the price . To explain this content, I've personally created a PDF document, which includes 287 GCD-related pages and 89 Operation-related pages,totaling 376 pages . (The actual material I use in my video lectures consists of approximately 830 PPT pages, excluding code.)
This course covers virtually everything you can find in international resources related to GCD/Operations , and most of the figures and diagrams in this course are my own . A significant amount of time and effort went into this course, and I believe it's a crucial topic for future developer development. Therefore, from my personal perspective, I planned and created this course based on the principles of "I wish there were more resources and lectures like this ."
Personally, I believe that paying for a course is a trade-off between time and money . I believe it will be worth the money, saving you time studying the subject . I hope you'll save time and gain greater satisfaction. I will strive to provide you with quality content that exceeds your price, and I sincerely ask you to keep this in mind. ^^
💌 Lecture content license related
In the cases where I've even slightly referenced images or other materials in this lecture, the relevant URL address is provided in the PDF . Except for those cases, all materials are my own. Therefore, if you're organizing the lecture's explanations on a blog or other site, I kindly ask you to include the link to this lecture .
However, it is prohibited under any circumstances to post the entire contents of this lecture on a blog or to share the PDF files used as lecture materials .
👀 Preview of lecture content provided
Before you decide to take a class, we've made it possible for you to check out the lecture style in advance.
( A preview of about an hourrelated to Section 0.1.GCD/Operation)
( A 5-minute previewrelated to Section 10. 1. Operation)
You can take a look at the lectures that are provided in preview and decide whether to take them :)
Recommended for these people
Who is this course right for?
Someone who has some knowledge of the Swift language
Anyone who wants to learn the basic concepts of synchronous and asynchronous processing in iOS
For those who want to know about the concept of GCD(Grand Central Dispatch) dispatch queue
Anyone who wants to know about the Dispatch Group
For those who want to know about Operation/OperationQueue
For those who want to know about the concept of thread safety
제가 공부하면서 겪었던 시행착오를 쉽게 풀어내어 지식을 공유할 수있는 개발자가 되고싶습니다.
쉬운 주제로 빠른 시간 안에 겉핥기 식으로 쉽게만 가르치는 강의를 만드는 것에는 관심이 없습니다. 그런 강의는 얼마든지 빠르게 찍어내듯 만들 수 있겠지만, 결국 "좋은 개발자로 성장"하는 것은 그만큼 이론적인 기반의 밑거름이 탄탄해야 한다고 믿고 있기 때문입니다.
쉬운 강의보다는, 좋은 개발자(끝임없이 성장할 수 있는 개발자)가 되기 위해 반드시 알아야 하는 어려운 내용까지를 최대한 쉽게, 그리고 직관적으로 알려드리는 것. 그래서 제가 아닌 여러분 스스로 고민/생각할 수 있는 밑거름을 만들어 드리는 것을 저의 강의 목표로 삼고 있습니다.
저 스스로도 내일은 더 좋은 개발자가 되자는 모토를 가지고 있는 만큼 제가 고민 했던 내용들을 깊이있게 전달 드리고 싶습니다.
Here are some people who would benefit from this lecture:
- People who think, "Oh no... What should I do?" when they hear the term "asynchronous processing"
- People who solve problems by Googling, but have no idea why the code is written this way or if the logic matches the requirements
That's me in the past. ◠‿◠.. I searched and read a lot of GCD-related materials to understand concurrency, asynchrony, etc., but my understanding was zero, and I continued to develop without understanding why and how to use it in what situation.
Then, when I found out that this lecture was included in the mandatory iOS development lectures designated by the company, I thought, "This is it!" I heard about it and as soon as I listened to the first lecture, I knew that this lecture is the only lecture that I have come to finish GCD, which has been an unknown area for a long time.
Every lecture is explained with pictures and examples. Wow.. The pictures are really God's work.. It's just.. It's the best.. Now, when I come across the content, the pictures are drawn in my head. Regardless of the field, I can confidently say that this is the only lecture among all the online and offline development lectures I have taken so far. If you leave a question, they will answer it in detail and kindly, so you can make the lecture 100% your own.
Lastly, this lecture is a great help in understanding asynchrony/concurrency regardless of the language. I had a chance to read an article about async and await in JavaScript a while ago, and it was so easy to read that I thought, wow, this is a really great lecture.
Well... To summarize in one word..
"I recommend the best lecture!" Mr. Alan, I hope you work less and earn more.. I hope you inhale wealth and exhale health...........!!!!!!!!!!!!!!!!!!!
First of all, the instructor is a non-major, so he understands the minds of non-majors very well and explains in great detail. It's really great. (I'm a non-major, too.) Anyone can understand it. Also, nowhere else do they teach synchronous/asynchronous content like this. I used to use asynchronous when communicating, but I didn't know exactly why, but I learned it after taking the class.
However, studying isn't something that you can do perfectly just by listening to it once, right? But this lecture is great because you can listen to it repeatedly as many times as you want once you buy it. Thank you.
(Lastly, there are PDF materials and codes, so I really, really like it! Highly recommended!!
I personally listened at 1.25x speed. There are times when the image quality goes down, but you can select the image quality in the settings window on the bottom right. If you select the highest, it will go back up.)
I chose this course because I lack a lot of understanding of synchronous/asynchronous, but even while I'm listening to it now, the quality of the course is quite high, and it's a course that makes me think, "When will the next lecture be filmed?" It's really good. I highly recommend it!
I've taken many lectures so far, but most of them are for beginners and only explain the basics. However, this lecture covers everything from the basics to the advanced, and I felt that a lot of time was spent on the design of the lecture itself and the preparation of the lecture materials. If you give another lecture like this, I think I'll enjoy it! Personally, if the lecturer gives a lecture related to functional programming and Rx, I think I'll pay again and enjoy it. Thank you for the great lecture!
It's been a while since I've heard such a high-quality lecture. It was a difficult topic, but I was impressed by the part where you explained it easily with images. I was disappointed that this lecture wasn't discounted when other lectures were discounted, but after completing the course, I think it's natural. Thank you for sharing good knowledge, and I hope you continue to prosper.