inflearn logo

Allen iOS Concurrency - Understanding DispatchQueue and OperationQueue

Concurrency Programming - Covers the concepts of synchronous and asynchronous programming required in iOS development, as well as everything related to GCD and Operation, which are extensions of those concepts.

(5.0) 63 reviews

830 learners

Level Basic

Course period Unlimited

iOS
iOS
Swift
Swift
concurrent
concurrent
iOS
iOS
Swift
Swift
concurrent
concurrent

Reviews from Early Learners

Reviews from Early Learners

5.0

5.0

asdfaa22

47% enrolled

It really helped me a lot. I was able to understand things that I didn't understand even after looking through the code and reading the posts. And the kind answers were the best.

5.0

eunjin

25% enrolled

I thought async and concurrent were the same thing, but I had a really, really big realization. Whenever I studied this, I always felt like I didn't understand 100%, so I felt uncomfortable, but I can't help but admire the instructor's picture-based explanation and perfect lecture composition... This is really my life's lecture... I will definitely save the instructor's pictures in my head and live my life..sob I love you so so so much, sob

5.0

sujinnaljin

97% enrolled

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...........!!!!!!!!!!!!!!!!!!!

What you will gain after the course

  • iOS Concurrency Programming

  • Understanding Optimization in iOS (Performance/Responsiveness)

  • Understanding the basic concepts of asynchronous (async) and synchronous (sync) processing

  • Understanding iOS Dispatch Queue (GCD)

  • Understanding Dispatch Groups / Asynchronous Dispatch Groups

  • Understanding iOS OperationQueue

  • Examples of real-world projects applying GCD/Operation

  • Everything from A to Z about GCD/Operation

  • Understanding Thread-Safety

  • Understanding Thread-Safe Object Design

  • Understanding all of this content easily and intuitively (with illustrations)

🙋🏻‍♂️ Self-Diagnosis Checklist

 

After the class, you will be able to clearly know and understand the following concepts.

  • I have a clear understanding of the concept of Dispatch Queue. (Yes/No)
  • I understand the types of DispatchQueues and Quality of Service (QoS). (Yes/No)
  • I know why the Sync method should not be used in most cases, and I understand the difference regarding cases where the Sync method must be used. (Yes/No)
  • I understand the concept of Dispatch Groups. (Yes/No)
  • I know what to be careful about when dealing with asynchronous functions in a Dispatch Group. (Yes/No)
  • I understand the concept of Dispatch Work Item and know why it is used. (Yes/No)
  • Dispatch Semaphore I understand the concept of and know how to use it. (Yes/No)
  • When designing objects, I clearly understand the precautions regarding the possibility of access by multiple threads and can design correct objects. (Yes/No)
  • I clearly understand the points to be cautious about when handling asynchronous concepts while creating table view/collection view type projects that download images. (Yes/No)
  • I clearly understand the problems that can occur 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 clearly understand how to write thread-safe code. (Yes/No)
  • I understand the concept of Operations, which are an extension of Dispatch Queues, and their differences. (Yes/No)
  • I can distinguish and decide when to use OperationQueue instead of DispatchQueue. (Yes/No)
  • I understand the code for AsyncOperation, which can handle asynchronous functions. (Yes/No)
  • Key features of Operation (setting the order of tasks, cancellation) can be used freely. (Yes/No)

 

 

📝 Lecture Curriculum

 

(It consists largely of GCD and Operation sections. Even if you have a good understanding of GCD, you might be unfamiliar with Operation (Task Class), which is a concept evolved from GCD. I have structured this so that you can understand everything in one single lecture, more clearly and easily than any other blog or course.)

 

 

🖼️ Example of the visual explanation method

 

(These are examples of the various illustrations and diagrams used in the class.)

 

 

🌈 Materials provided in the lecture

 

The following various materials are provided.

  1. GCD Summary PDF - 287 pages
  2. Operation Summary PDF - 89 pages
  3. Code for GCD-related explanations (Playground file) - 19 pages (excluding source files)
  4. Code for Operation-related explanations (Playground file) - 8 pages (excluding source files)
  5. iOS Project Files - 8 items
  6. Translated versions of reference articles (2 types)

(All materials within the folder above are provided.)

 

 

🙌 Materials referenced for course creation

 

Although I referred to the materials below, all the diagram explanations were designed by myself.

  1. Video Lecture (iOS Concurrency with GCD and Operations) - raywenderlich https://www.raywenderlich.com/3648-ios-concurrency-with-gcd-and-operations
  2. Book(Concurrency by Tutorials) - raywenderlich https://store.raywenderlich.com/products/concurrency-by-tutorials
  3. Article(Operation and OperationQueue Tutorial in Swiftraywenderlich https://www.raywenderlich.com/5293-operation-and-operationqueue-tutorial-in-swift
  4. Article(The thread safety of lazy variables in Swift) https://medium.com/what-i-talk-about-when-i-talk-about-ios-developmen/the-thread-safet y-of-lazy-variables-in-swift-b20184ef5a38

 

 

🙋🏻‍♂️ Is there a significant difference between the course content and the <Course Production References>?

 

There is a very significant difference.

If I had intended to create a lecture that was merely a simple translation of the reference materials above, I would not have planned this course. I have personally created efficient and effective explanations, direct illustrations, and diagrams using PPT for these topics, choosing the best method of explanation to help provide an intuitive understanding of how actual threads operate. As mentioned above, I have reviewed the reference materials more than 10 times each, and this lecture aims to cover all that content while making it much easier to understand through various intuitive illustrations.

 

And since the content of these illustrations was personally organized over a period of more than two months full-time, I believe you won't find this method of explanation or such detailed descriptions anywhere else (including overseas materials). For example, if there was a single line in the reference material (raywenderlich's video lecture) stating, “There may also be issues related to lazy var,” I have personally researched all issues related to lazy var, organized them, provided intuitive understanding through illustrations, and presented solutions.

 

Under the premise that once you understand the diagrams (the big picture), writing code becomes very easy, I have tried to maintain a balance between understanding through diagrams and practical application through code, which creates a significant difference from other reference materials. I would like to say that the clear points of differentiation are the much more detailed, intuitive, and abundant materials, along with consistent and easy-to-understand explanations compared to other resources.

 

 

🐠 Regarding the provided code

 

To help with understanding the topic, code files are provided and covered within the lesson content. Regarding the provided code, within the scope permitted by the license, I have adopted most of the code provided in Ray Wenderlich's GCD video lectures (the adopted parts are specified). For parts where the license is not permitted (code provided in Ray Wenderlich books), I have written the code myself, and the core parts are written similarly within a large framework to ensure the reliability of the provided code.

 

 

Additionally, to help you understand the provided code, I have rearranged the sequence and added numerous pieces of code for more detailed explanations, helping you grasp the course content through various examples.

 

 

🤔 Regarding the pricing of the class

 

You may find the price a bit high for a single topic, but I want to assure you that it contains so much content that you will experience satisfaction far exceeding the price. To explain this content, I am providing a total of 376 pages of PDF materials that I wrote myself, consisting of 287 pages on GCD and 89 pages on Operation. (The actual materials I use for explanation in the video lectures consist of about 830 PPT slides, excluding code.)

 

It covers almost everything related to GCD/Operation that can be found in international resources, and most of the illustrations and diagrams included in this course were created by me personally. A significant amount of time and effort went into this course, and because I believe it is such an important topic for a developer's future growth, I planned and created it based on the standard of (from my personal perspective) “I wish there were materials and a course like this.”

 

Additionally, from my personal perspective, I believe that deciding to pay for a lecture is a matter of exchanging time for money. I believe this course will serve as an effective way to save you study time on this topic relative to the cost, and it is my hope that you save time and achieve higher satisfaction. I will repay you with substantial content to provide satisfaction that exceeds the price, and I politely ask for your kind consideration of these points. ^^

 

 

💌 Regarding Lecture Content Licensing

 

In the contents of this lecture, for any instances where I have referenced drawings or other materials, the relevant URL addresses are provided in the PDF. Since all other materials except for those cases were created by me, I politely request that you include the URL of this lecture when summarizing the explanation methods on your blog or other platforms.

 

Nevertheless, including the overall content of this lecture on a blog or sharing the PDF files used as lecture materials is strictly prohibited under any circumstances.

 

 

 

👀 Providing a preview of the course content

 

Before you decide to take the course, we have made it possible for you to check the teaching style in advance.

  • (Section 0. 1. Prior to GCD/Operation) and related approximately 1 hour of preview
  • (Section 10. 1. Prior to Operation)-related preview of about 5 minutes

 

 

You can check out the lectures provided as previews and then decide whether to take the course. :)

Recommended for
these people

Who is this course right for?

  • Those who have some familiarity with the Swift language

  • Those who want 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 Queues

  • For those who want to know more about Dispatch Group

  • For those who want to know about Operation/OperationQueue

  • For those who want to know about the concept of Thread-safety

  • Junior to Mid-level iOS Developer

Need to know before starting?

  • Understanding the Swift Language

  • Understanding iOS Programming

Hello
This is allen

7,610

Learners

755

Reviews

311

Answers

5.0

Rating

7

Courses

I'm Allen, an iOS Developer.
https://www.youtube.com/@allen_ios

"Knowledge that is accurately understood must be easily explainable in one's own words." is my motto.

Therefore, I want to be a developer who can share knowledge in a language anyone can understand by simplifying the trial and error I experienced while studying.


I am not interested in creating courses that only teach easy topics superficially in a short amount of time.
While such courses can be churned out quickly, I believe that ultimately, "growing into a good developer" requires a solid foundation of theoretical knowledge.

Rather than just an easy course, my goal is to teach even the difficult concepts that one
must know to become a good developer (a developer who can grow continuously) as easily and intuitively as possible.
Thus, my objective is to build a foundation that allows you, not me, to contemplate and think about the "WHY" yourself.

Just as I strive to become a better developer tomorrow,
I want to convey the things I have pondered in great depth.

 

I believe that repeatedly failing interviews or being unable to express even simple concepts in your own words means you do not have a precise understanding of them. On the contrary, I believe that one can grow rapidly only when they have a "solid foundation" in basic concepts and CS.


👇🏻For inquiries, please contact me at the email address below.

we.love.code.allen@gmail.com


Language: Swift, Python, Java, C#

More

Curriculum

All

32 lectures ∙ (8hr 9min)

Course Materials:

Lecture resources
Published: 
Last updated: 

Reviews

All

63 reviews

5.0

63 reviews

  • youngilchung0015님의 프로필 이미지
    youngilchung0015

    Reviews 6

    Average Rating 5.0

    5

    100% enrolled

    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.

    • leedh20083569님의 프로필 이미지
      leedh20083569

      Reviews 3

      Average Rating 5.0

      5

      100% enrolled

      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!

      • brianj님의 프로필 이미지
        brianj

        Reviews 5

        Average Rating 5.0

        5

        100% enrolled

        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.)

        • sujikang7936님의 프로필 이미지
          sujikang7936

          Reviews 3

          Average Rating 5.0

          5

          97% enrolled

          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...........!!!!!!!!!!!!!!!!!!!

          • sangbum225213님의 프로필 이미지
            sangbum225213

            Reviews 3

            Average Rating 5.0

            5

            47% enrolled

            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!

            allen's other courses

            Check out other courses by the instructor!

            Similar courses

            Explore other courses in the same field!

            $51.70