Autoplay
Autocomplete
Previous Lesson
Complete and Continue
Swift Concurrency Course
Introduction to Swift Concurrency
Introduction to this course: Learning with video, text, and quizes
The Swift Concurrency Course Manifesto: The async/await origin story
What is Structured Concurrency?
The relationship of Swift 6 to Swift Concurrency
Assessment
Async/Await Basics
Introduction to async/await syntax
Understanding the order of execution
Calling async functions in parallel using async let
Performing network requests using URLSession and async/await
Assessment
Tasks
Introduction to tasks in Swift Concurrency
Task cancellation
Error handling in Tasks
Detached Tasks
Task Groups
Discarding Task Groups
The difference between structured and unstructured tasks
Managing Task priorities
Task.yield() vs. Task.sleep()
Task local storage using @TaskLocal
Running tasks in SwiftUI
Creating a Task timeout handler using a Task Group (advanced)
Assessment
Sendable
Explaining the concept of Sendable in Swift
Understanding Data Races vs. Race Conditions: Key Differences Explained
Conforming your code to the Sendable protocol
Sendable and Value Types
Sendable and Reference Types
Using @Sendable with closures
Using @unchecked Sendable
Understanding region-based isolation and the sending keyword
Concurrency-safe global variables
Combining Sendable with custom Locks
Assessment
Actors
Understanding actors in Swift Concurrency
An introduction to Global Actors
When and how to use @MainActor
Isolated vs. non-isolated access in actors
Using Isolated synchronous deinit
Adding isolated conformance to protocols
Understanding actor reentrancy
Inheritance of actor isolation using the #isolation macro
Using a custom actor executor
Using a Mutex as an alternative to actors
Assessment
AsyncStream and AsyncSequences
Working with asynchronous sequences
Using AsyncStream and AsyncThrowingStream in your code
Deciding between AsyncSequence, AsyncStream, or regular asynchronous methods
Assessment
Threading
How Threads relate to Tasks
Getting rid of the "Threading Mindset"
Understanding Task suspension points
Dispatching to different threads using nonisolated(nonsending) and @concurrent (Updated for Swift 6.2)
Controlling the default isolation domain (Updated for Swift 6.2)
Assessment
Memory Management
Overview of memory management in Swift Concurrency
Preventing retain cycles when using Tasks
Assessment
Core Data
An introduction to Swift Concurrency and Core Data
Sendable and NSManageObjects
Using a custom Actor executor for Core Data (advanced)
Autogenerated Core Data Objects and Default MainActor Isolation Conflicts
Testing Concurrent Code
Testing concurrent code using XCTest
Testing concurrenct code using Swift Testing
Using Swift Concurrency Extras by Point-Free
Assessment
Migrating existing code to Swift Concurrency & Swift 6
Challenges in migrating to Swift Concurrency
The impact of Swift 6 on Swift Concurrency
The six migration habits for a successful migration
Steps to migrate existing code to Swift 6 and Strict Concurrency Checking
The Approachable Concurrency build setting (Updated for Swift 6.2)
Migration tooling for upcoming Swift features
Techniques for rewriting closures to async/await syntax
How and when to use @preconcurrency
Migrating away from Functional Reactive Programming like RxSwift or Combine
Frequently Asked Questions (FAQ) around Swift 6 Migrations
Assessment
Completion & Certification
Obtaining your certificate to showcase your knowledge on platforms like LinkedIn
Creating a Task timeout handler using a Task Group (advanced)
Lesson content locked
If you're already enrolled,
you'll need to login
.
Enroll in Course to Unlock