강의

멘토링

로드맵

Inflearn brand logo image
BEST
Programming

/

Mobile Application Development

Alan iOS Concurrency - Tìm hiểu hàng đợi công văn và hàng đợi hoạt động

Lập trình đồng thời - Bao gồm tất cả các khái niệm về đồng bộ hóa và không đồng bộ cần thiết trong lập trình iOS, cũng như GCD và Hoạt động, mở rộng chúng.

(5.0) 59 đánh giá

824 học viên

  • allen
iOS
Swift
concurrent

Đánh giá từ những học viên đầu tiên

Dịch cái này sang tiếng Việt

  • Lập trình đồng thời iOS

  • Hiểu tối ưu hóa trong iOS (hiệu suất/khả năng phản hồi)

  • Hiểu các khái niệm cơ bản về xử lý không đồng bộ/đồng bộ hóa

  • Hiểu hàng đợi công văn của iOS (GCD)

  • Hiểu nhóm công văn/nhóm công văn không đồng bộ

  • Tìm hiểu về OperationQueue của iOS

  • Ví dụ về một dự án thực tế áp dụng GCD/Operation

  • A đến Z về GCD/Vận hành

  • Hiểu về an toàn luồng

  • Hiểu thiết kế đối tượng an toàn theo luồng

  • Dễ dàng hiểu tất cả những điều này một cách trực quan (có hình ảnh)

🙋🏻‍♂️ Biểu đồ tự chẩn đoán

Sau lớp học, bạn sẽ hiểu rõ các khái niệm dưới đây.

  • Tôi hiểu rõ khái niệm về hàng đợi phân phối . (Có/Không)
  • Tôi hiểu các loại hàng đợi điều phối và chất lượng dịch vụ (QoS). (Có/Không)
  • Trong hầu hết các trường hợp, tôi biết lý do tại sao tôi không nên sử dụng phương pháp Đồng bộ hóa và tôi hiểu sự khác biệt giữa thời điểm tôi hoàn toàn phải sử dụng phương pháp Đồng bộ hóa . (Có/Không)
  • Tôi biết về khái niệm nhóm điều phối . (Có/Không)
  • Tôi biết những điều cần lưu ý khi xử lý các hàm không đồng bộ trong nhóm điều phối . (Có/Không)
  • Tôi hiểu khái niệm về các hạng mục công việc được phân công và lý do tại sao chúng được sử dụng. ( Có/Không)
  • Tôi biết khái niệm về tín hiệu điều phối và cách sử dụng chúng. (Có/Không)
  • Khi thiết kế các đối tượng, bạn phải hiểu rõ những cân nhắc về khả năng nhiều luồng truy cập chúng và thiết kế các đối tượng phù hợp . (Có/Không)
  • Khi tạo một dự án thuộc loại chế độ xem bảng/chế độ xem bộ sưu tập tải xuống hình ảnh, tôi hiểu rõ những điểm cần lưu ý khi xử lý khái niệm bất đồng bộ . (Có/Không)
  • Tôi hiểu rõ các vấn đề tiềm ẩn có thể phát sinh khi sử dụng hàng đợi phân phối (khi nhiều luồng truy cập dữ liệu), đặc biệt là tình trạng chạy đua và tôi biết cách sử dụng TSan (Công cụ khử trùng luồng) . (Có/Không)
  • Tôi hiểu rõ cách viết mã an toàn cho luồng . (Có/Không)
  • Tôi biết khái niệm về các hoạt động mở rộng trong hàng đợi phân phối và sự khác biệt giữa chúng. (Có/Không)
  • Bạn có thể sử dụng nó để phân biệt khi nào nên sử dụng hàng đợi thao tác thay vì hàng đợi phân phối. (Có/Không)
  • Tôi hiểu mã cho các hoạt động không đồng bộ (AsyncOperation) , có thể xử lý các hàm không đồng bộ. (Có/Không)
  • Bạn có thể thoải mái sử dụng các chức năng chính của thao tác (đặt thứ tự các tác vụ, hủy chúng) . (Có/Không)

📝 Mục lục bài giảng

(Phần lớn được chia thành phần GCD và phần Phép toán . Ngay cả khi bạn hiểu rõ về GCD, bạn vẫn có thể không quen với Phép toán (lớp nhiệm vụ) , một khái niệm được phát triển từ GCD. Bài giảng được cấu trúc sao cho bạn có thể hiểu mọi thứ trong một bài giảng, rõ ràng và dễ hiểu hơn bất kỳ blog hay bài giảng nào.)

🖼️ Ví dụ về kiểu chú thích ảnh

(Ví dụ về nhiều phương pháp giải thích bằng hình ảnh và sơ đồ được sử dụng trong lớp học.)

🌈 Tài liệu được cung cấp trong bài giảng 

Dưới đây cung cấp nhiều tài liệu khác nhau.

  1. Tóm tắt liên quan đến GCD PDF - Chương 287
  2. Tóm tắt liên quan đến hoạt động PDF - Chương 89
  3. Mã giải thích liên quan đến GCD (tệp sân chơi) - 19 trang (không bao gồm tệp nguồn)
  4. Mã cho các giải thích liên quan đến Hoạt động (tệp sân chơi) - 8 trang (không bao gồm tệp nguồn)
  5. Tệp dự án iOS - 8
  6. Giải thích các bài viết tham khảo (2)

(Tất cả tài liệu trong thư mục trên đều được cung cấp.)

🙌 Tài liệu tham khảo được sử dụng trong quá trình biên soạn bài giảng

Mặc dù tôi đã tham khảo các tài liệu bên dưới, nhưng tôi đã tự mình thiết kế tất cả các mô tả minh họa.

  1. Bài giảng video ( iOS Concurrency với GCD và Operations ) - Raywenderlich https://www.raywenderlich.com/3648-ios-concurrency-with-gcd-and-operations
  2. Sách ( Concurrency by Tutorials ) - Raywenderlich https://store.raywenderlich.com/products/concurrency-by-tutorials
  3. Bài viết ( Hướng dẫn về Operation và OperationQueue trong Swift ) - Raywenderlich https://www.raywenderlich.com/5293-operation-and-operationqueue-tutorial-in-swift
  4. Bài viết ( An toàn luồng của biến lười trong Swift ) https://medium.com/what-i-talk-about-when-i-talk-about-ios-developmen/the-thread-safety-of-lazy-variables-in-swift-b20184ef5a38

🙋🏻‍♂️ Nội dung bài giảng có khác nhiều so với <Tài liệu tham khảo sản xuất bài giảng> không?

Thực sự có rất nhiều sự khác biệt.

Nếu tôi chỉ cố gắng tạo ra một bài giảng ở mức độ dịch thuật dựa hoàn toàn vào các tài liệu tham khảo ở trên, tôi đã không lên kế hoạch cho bài giảng này. Tôi đã chọn phương pháp giải thích tốt nhất có thể, tự mình tạo ra các bài thuyết trình PPT với những lời giải thích hiệu quả, minh họa trực quan và sơ đồ về các chủ đề này để giúp bạn hiểu trực quan cách thức hoạt động thực sự của các luồng . Như đã đề cập ở trên , tôi đã xem lại các tài liệu tham khảo hơn mười lần, và mặc dù bao quát toàn bộ nội dung, bài giảng này nhằm mục đích giúp việc giải thích dễ dàng hơn nhiều và các hình ảnh minh họa đa dạng giúp bạn dễ hiểu hơn.

Và vì nội dung của những hình ảnh này là do cá nhân tôi tự sắp xếp trong hơn hai tháng làm việc toàn thời gian, tôi không nghĩ bạn sẽ tìm thấy một lời giải thích nào như thế này hoặc chi tiết như thế này ở bất kỳ nơi nào khác (kể cả tài liệu nước ngoài). Ví dụ, nếu có một dòng duy nhất trong tài liệu tham khảo (bài giảng video của raywenderlich) nói rằng, "Vấn đề này cũng có thể xảy ra với lazy var", tôi đã có thể tự mình xác định tất cả các vấn đề liên quan đến lazy var, sắp xếp chúng và đưa ra giải pháp đồng thời giúp hiểu trực quan hơn về các hình ảnh.

Việc hiểu được bức tranh tổng thể giúp việc viết code dễ dàng hơn rất nhiều. Tôi đã cố gắng duy trì sự cân bằng giữa việc hiểu thông qua hình ảnh và việc áp dụng code càng nhiều càng tốt, điều này làm cho cuốn sách này nổi bật so với các tài liệu tham khảo khác. So với các tài liệu tham khảo khác, cuốn sách này cung cấp nhiều chi tiết hơn, trực quan hơn và nội dung phong phú hơn, cùng với những giải thích nhất quán và dễ hiểu.

🐠 Về mã được cung cấp

Để giúp bạn hiểu rõ hơn về chủ đề này, các tệp mã được cung cấpcũng được đề cập trong lớp học . Phần lớn mã được cung cấp được lấy từ các bài giảng video GCD của raywenderlich trong phạm vi được giấy phép cho phép ( các phần được áp dụng đã được chỉ định ). Đối với các phần mà giấy phép không cho phép (mã được cung cấp trong sách raywenderlich), tôi đã tự viết mã và trong khuôn khổ chính , tôi đã cố gắng đảm bảo độ tin cậy của mã được cung cấp bằng cách viết tương tự.

Ngoài ra, để giúp bạn hiểu mã chúng tôi cung cấp, chúng tôi đã sắp xếp lại thứ tự mã và thêm mã để giải thích chi tiết hơn, cung cấp nhiều ví dụ để giúp bạn hiểu nội dung của khóa học này.

🤔 Về giá lớp học

Bạn có thể ngạc nhiên vì mức giá cao cho một chủ đề duy nhất, nhưng tôi đảm bảo với bạn rằng nội dung phong phú này hoàn toàn xứng đáng . Để giải thích nội dung này, tôi đã tự tay tạo một tài liệu PDF, bao gồm 287 trang liên quan đến GCD89 trang liên quan đến Toán tử, tổng cộng là 376 trang . (Tài liệu thực tế tôi sử dụng trong các bài giảng video của mình bao gồm khoảng 830 trang PPT, chưa kể mã.)

Khóa học này bao gồm hầu như mọi thứ bạn có thể tìm thấy trong các nguồn tài liệu quốc tế liên quan đến GCD/Operations , và hầu hết các hình ảnh và sơ đồ trong khóa học này là của riêng tôi . Tôi đã dành rất nhiều thời gian và công sức cho khóa học này, và tôi tin rằng đây là một chủ đề quan trọng cho sự phát triển của các nhà phát triển trong tương lai. Do đó, theo quan điểm cá nhân, tôi đã lên kế hoạch và tạo ra khóa học này dựa trên nguyên tắc "Ước gì có nhiều tài liệu và bài giảng như thế này hơn ".

Cá nhân tôi tin rằng việc trả tiền cho một khóa học là một sự đánh đổi giữa thời gian và tiền bạc . Tôi tin rằng nó sẽ xứng đáng với số tiền bỏ ra, giúp bạn tiết kiệm thời gian học tập . Tôi hy vọng bạn sẽ tiết kiệm được thời gian và có được sự hài lòng hơn. Tôi sẽ cố gắng cung cấp cho bạn nội dung chất lượng vượt xa mức giá bạn bỏ ra, và tôi chân thành mong bạn hãy ghi nhớ điều này. ^^

💌 Giấy phép nội dung bài giảng liên quan

Trong trường hợp tôi có tham khảo hình ảnh hoặc tài liệu khác trong bài giảng này, địa chỉ URL liên quan sẽ được cung cấp trong tệp PDF . Ngoại trừ những trường hợp đó, tất cả tài liệu đều là của tôi. Do đó, nếu bạn đang sắp xếp phần giải thích bài giảng trên blog hoặc trang web khác, tôi đề nghị bạn vui lòng đính kèm liên kết đến bài giảng này .

Tuy nhiên, việc đăng toàn bộ nội dung bài giảng này lên blog hoặc chia sẻ các tệp PDF được sử dụng làm tài liệu bài giảng đều bị nghiêm cấm trong mọi trường hợp .

👀 Xem trước nội dung bài giảng được cung cấp

Trước khi bạn quyết định tham gia một lớp học, chúng tôi đã tạo điều kiện cho bạn kiểm tra trước phong cách bài giảng.

  • ( Bản xem trước khoảng một giờ liên quan đến Mục 0.1.GCD/Hoạt động)
  • ( Bản xem trước 5 phút liên quan đến Mục 10. 1. Hoạt động)

Bạn có thể xem trước các bài giảng được cung cấp và quyết định có nên tham gia hay không :)

Khuyến nghị cho
những người này

Khóa học này dành cho ai?

  • Bất cứ ai đã học một chút ngôn ngữ Swift

  • Bất kỳ ai muốn tìm hiểu các khái niệm cơ bản về xử lý không đồng bộ đồng bộ trong iOS

  • Bất cứ ai muốn biết về khái niệm hàng đợi công văn GCD (Grand Central Dispatch)

  • Bất cứ ai muốn biết về Dispatch Group

  • Bất cứ ai muốn biết về Operation/OperationQueue

  • Bất cứ ai muốn biết về khái niệm An toàn luồng

  • Nhà phát triển iOS từ sơ cấp đến trung cấp

Cần biết trước khi bắt đầu?

  • Hiểu ngôn ngữ Swift

  • Tìm hiểu lập trình iOS

Xin chào
Đây là

7,346

Học viên

706

Đánh giá

297

Trả lời

5.0

Xếp hạng

7

Các khóa học

iOS개발자 앨런입니다.
https://www.youtube.com/@allen_ios

제가 공부하면서 겪었던 시행착오를 쉽게 풀어내어
지식을 공유할 수있는 개발자가 되고싶습니다.

쉬운 주제로 빠른 시간 안에 겉핥기 식으로 쉽게만 가르치는 강의를 만드는 것에는 관심이 없습니다.
그런 강의는 얼마든지 빠르게 찍어내듯 만들 수 있겠지만, 결국 "좋은 개발자로 성장"하는 것은 그만큼 이론적인 기반의 밑거름이 탄탄해야 한다고 믿고 있기 때문입니다.

쉬운 강의보다는, 좋은 개발자(끝임없이 성장할 수 있는 개발자)가 되기 위해
반드시 알아야 하는 어려운 내용까지를 최대한 쉽게, 그리고 직관적으로 알려드리는 것.
그래서 제가 아닌 여러분 스스로 고민/생각할 수 있는 밑거름을 만들어 드리는 것을 저의 강의 목표로 삼고 있습니다.

저 스스로도 내일은 더 좋은 개발자가 되자는 모토를 가지고 있는 만큼
제가 고민 했던 내용들을 깊이있게 전달 드리고 싶습니다.


👇🏻문의는 아래의 이메일로 주시면 됩니다. 

we.love.code.allen@gmail.com


언어: Swift(스위프트), Python, Java, C#

Chương trình giảng dạy

Tất cả

32 bài giảng ∙ (8giờ 9phút)

Tài liệu khóa học:

Tài liệu bài giảng
Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Tất cả

59 đánh giá

5.0

59 đánh giá

  • sujikang7936님의 프로필 이미지
    sujikang7936

    Đánh giá 3

    Đánh giá trung bình 5.0

    5

    97% đã tham gia

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

    • brianj님의 프로필 이미지
      brianj

      Đánh giá 5

      Đánh giá trung bình 5.0

      5

      100% đã tham gia

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

      • sangbum225213님의 프로필 이미지
        sangbum225213

        Đánh giá 3

        Đánh giá trung bình 5.0

        5

        47% đã tham gia

        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!

        • leedh20083569님의 프로필 이미지
          leedh20083569

          Đánh giá 3

          Đánh giá trung bình 5.0

          5

          100% đã tham gia

          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!

          • youngilchung0015님의 프로필 이미지
            youngilchung0015

            Đánh giá 6

            Đánh giá trung bình 5.0

            5

            100% đã tham gia

            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.

            1.405.028 ₫

            Khóa học khác của allen

            Hãy khám phá các khóa học khác của giảng viên!

            Khóa học tương tự

            Khám phá các khóa học khác trong cùng lĩnh vực!