Ответ
NSThread — это низкоуровневый класс Objective-C/Swift для создания и управления нативными потоками (threads) вручную.
Основные характеристики:
- Прямое управление: Полный контроль над жизненным циклом потока (запуск, остановка, приоритет).
- Не переиспользуется: Каждый поток — тяжелый системный объект. Частое создание дорого.
- Нет встроенных очередей: В отличие от GCD, не управляет очередями задач.
Пример создания потока:
let thread = Thread {
print("Выполняем в фоновом потоке")
Thread.sleep(forTimeInterval: 2.0)
print("Завершено")
}
thread.name = "MyBackgroundThread"
thread.start()
Недостатки и риски:
- Синхронизация: Требует ручной защиты общих данных (мьютексы, блокировки) от состояний гонки (race conditions).
- Производительность: Создание многих потоков неэффективно.
- Сложность: Легко допустить ошибки, ведущие к deadlock или утечкам памяти.
Когда использовать?
- Для редких задач, требующих точного контроля над потоком выполнения.
- При работе с legacy-кодом.
- В большинстве современных случаев предпочтительнее использовать
DispatchQueue(GCD) илиOperationQueue— они безопаснее, эффективнее и проще.