Почему Task.sleep не блокирует основной поток?IOS

Программируем под IOS
Anonymous
Почему Task.sleep не блокирует основной поток?

Сообщение Anonymous »

У меня есть приложение RealityKit, и в основном потоке работает следующий код:

Код: Выделить всё

class MyARView {
func additionalLoadingPrep() async {
try? await Task.sleep(for: .seconds(10))
}
}

Код: Выделить всё

  public override func viewDidLoad() {
Task { @MainActor in
// setup scene in arView
await arView.additionalLoadingPrep()
}
}
Я понимаю, что в течение этих 10 секунд мои пользовательские вызовы обновления системы (как System в ECS) по-прежнему выполняются в каждом кадре. И я могу подтвердить, что эти вызовы также выполняются в основном потоке.
Мне казалось, что я уже усыпил основной поток на 10 секунд, так почему же систему все еще можно вызвать? Это потому, что параллельная обработка нескольких ядер в моем процессоре (или чередование выполнения одноядерного процессора)?

Подробнее здесь: https://stackoverflow.com/questions/798 ... ain-thread

Вернуться в «IOS»