Task-local значения — это механизм в модели структурированной конкурентности Swift, который позволяет прикреплять контекстные данные к задаче, которые автоматически распространяются на все дочерние задачи в иерархии.
Они объявляются с помощью обёртки свойства @TaskLocal:
enum Context {
@TaskLocal static var requestID: String = "default"
}
withValue и активны только в пределах этого скоупа:await Context.$requestID.withValue("abc-123") {
await performRequest()
}
async let автоматически наследуют текущие task-local значения от своего родителяTask-local значения концептуально похожи на thread-local хранилище, но разработаны специально для структурированной конкурентности Swift. Они идеальны, когда нужно передавать неявный контекст через иерархию async-вызовов без загромождения сигнатур функций дополнительными параметрами.
Значения, объявленные с помощью @TaskLocal, можно напрямую изменять внутри задачи, но изменения влияют только на текущую задачу и не распространяются на дочерние задачи.
Новый — ещё не проверен сообществом
Вы