Запуск функций в параллельных потоках
Есть функция, которая имеет входные параметры и совершает действия с ними. Например:
func greetPerson (Person: String) {
print("Hello, \(Person)!")
}
Как запустить эту функцию много раз в параллельных потоках, причем пользователь вводит количество потоков в начале работы с программой и при этом параметры функции (в данном примере человек, которого мы будем приветствовать) в каждом потоке будут разные.
Ответы (1 шт):
Автор решения: NSA-bot
→ Ссылка
Не знаю, подойдет ли это для вас. Тут количество потоков не вводится пользователем, а соответствует количеству элементов которые вы будете подставлять в метод (в вашем случае, количество людей). В примере получается три параллельных потока, так как в массиве три имени. Если будет 20 имен, то будет 20 потоков.
let people = ["Вася", "Петя", "Катя"]
func greetPerson(person: String) {
print("Hello, \(person)!")
}
// Метод в цикле выбирает элементы из массива и подставляет в ваш метод, запускаемый каждый раз в новом потоке (все потоки выполняются параллельно).
func greetings(of people: [String]) {
for person in people {
DispatchQueue.global().async {
greetPerson(person: person)
}
}
}
greetings(of: people)