For cases where the number of concurrent processes is determined at runtime, we can use TaskGroup. These contain groups of asynchronous tasks that are created dynamically. To create a TaskGroup, we use withThrowingTaskGroup(of:returning:body:): await withThrowingTaskGroup(of: String.self,
returning: [String]) { group in
...
} With this code, we create a TaskGroup…