Почему 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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