SendableПротокол Sendable отмечает типы, которые безопасно передавать через границы конкурентности, например между акторами или конкурентными задачами. Это позволяет компилятору Swift статически проверять, что общие данные не могут вызвать race condition.
Sendable, если все их хранимые свойства также Sendablelet-свойствами типов Sendable могут безопасно соответствовать протоколуSendable, потому что они сериализуют доступ к своему внутреннему состоянию@unchecked Sendable — вручную добавляет тип в протокол, обходя проверки компилятора; разработчик сам гарантирует потокобезопасность (например, с помощью блокировок или очередей внутри)Когда тип соответствует Sendable, компилятор проверяет корректность этого соответствия. Например, класс с изменяемым состоянием и без механизма синхронизации вызовет предупреждение или ошибку компилятора:
// ⚠️ Небезопасно — изменяемый reference type
class Counter: Sendable {
var count = 0 // ошибка компилятора
}
// ✅ Безопасно — immutable reference type
final class ImmutableCounter: Sendable {
let count = 0
}
Sendable — это инструмент проверки на этапе компиляции. Правильное его использование гарантирует, что только потокобезопасные типы пересекают границы конкурентности, предотвращая data race без опоры на проверки во время выполнения.
Протокол Sendable обеспечивает статическую верификацию на этапе компиляции, что типы безопасно можно передавать через границы конкурентности, предотвращая гонки данных до момента выполнения.
Новый — ещё не проверен сообществом
Вы