Почему Swift всегда приостанавливает работу при запуске асинхронной функции, даже если внутри нее нет асинхронного кода IOS

Программируем под IOS
Ответить
Anonymous
 Почему Swift всегда приостанавливает работу при запуске асинхронной функции, даже если внутри нее нет асинхронного кода

Сообщение Anonymous »

Я прочитал несколько статей и мне сказали, что если асинхронная функция содержит только обычный синхронный код, то во время выполнения не будет ни приостановки, ни переключения потока,
как упоминалось в этой статье

Если приостановки не произойдет, пауза не произойдет, и ваша функция продолжит работать с той же эффективностью и временем, что и синхронная функция.
И последнее. часть имеет важный побочный эффект: использование await не приведет к тому, что ваш код будет ждать прохождения одного цикла выполнения, прежде чем продолжить.

Однако я провел тест и кажется, это так не работает

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

struct ContentStructure: View {
var body: some View {
CustomView()
.task {
print("task start thread = \(Thread.current)")
await fakeExpensiveWork()
print("task end thread = \(Thread.current)")
}
}
}

func fakeExpensiveWork() async {
print("fake expensive work thread = \(Thread.current)")
}

struct CustomView: View{

init(){
print("init thread = \(Thread.current)")
}

var body: some View{
List{
ForEach(1..

Подробнее здесь: [url]https://stackoverflow.com/questions/79147229/why-swift-always-suspend-when-running-async-function-even-if-there-is-no-asynchr[/url]
Ответить

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

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

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

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

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